Verschieben eines Elements aus einem übergeordneten Ordner in seinen Unterordner


-2

Ich habe mich gefragt, ob mir jemand mit einem Skript helfen kann, das eine oder mehrere Dateien aus einem übergeordneten Ordner in seinen Unterordner verschiebt. Das ist es. Ich habe Skripte gesehen, die Dateien in ihre übergeordneten Ordner verschieben, aber nichts, um sie um einen Stift nach unten zu verschieben. Ist das möglich?


Ist der Unterordner ein vorhersehbarer Name oder kann er im Wesentlichen zufällig variieren?
Tubedogg

Der Unterordner hat immer den gleichen Namen und befindet sich in einem Ordner auf dem Finder
rcktship 13.10.16

Antworten:


1

Warum kompliziert werden?

cd /Users/admin/Desktop/test &&
mkdir -p Archive &&
find . -maxdepth 1 -type f -exec mv -nv {} Archive \;

Vorteile:

  • Behandelt Leerzeichen, Sonderzeichen oder sogar Zeilenumbrüche in Dateinamen korrekt.
  • Wird beendet, wenn das testVerzeichnis nicht erreicht werden kann.
  • Wird beendet, wenn das ArchiveVerzeichnis nicht vorhanden ist und nicht erstellt werden kann.
  • Zeigt an, welche Dateien verschoben werden.
  • Überschreibt keine vorhandenen Dateien mit demselben Namen.
  • Ist eigentlich ein Einzeiler, nur zur besseren Lesbarkeit aufgebrochen:

    cd /Users/admin/Desktop/test && mkdir -p Archive && find . -maxdepth 1 -type f -exec mv -nv {} Archive \;

-2

Es ist nicht perfekt, aber das Folgende wird meistens funktionieren. Annahmen:

• Das Quellverzeichnis ist / Users / admin / Desktop / test (kann bearbeitet werden)

• Das verschachtelte Zielverzeichnis ist Archiv

#!/bin/bash

oldIFS=$IFS
IFS=$(/bin/echo -en "\n\b")

dir="/Users/admin/Desktop/test"

if [ -d $dir/Archive ] ; then
    for FILE in `/bin/ls $dir | /usr/bin/grep -v Archive` ; do
        /bin/echo "Moving $FILE"
        /bin/mv $dir/$FILE $dir/Archive/$FILE
    done
    else
        /bin/echo "Folder $dir/Archive does not exist"
fi

IFS=$oldIFS

Beachten Sie, dass andere Dateien, deren Name "Archiv" enthält, ebenfalls übersprungen werden. Ich bin sicher, dass es einen besseren Weg gibt.


1. Nicht analysieren ls. Tu es einfach nie. 2. Zitieren Sie Ihre Shell-Variablen. 3. printfist besser alsecho , insbesondere wenn Sie Escape-Sequenzen verwenden müssen.
Wildcard

BEEINDRUCKEND! Danke euch allen! Ich werde heute damit arbeiten und sehen, wie es geht!
Rcktship

lol- Ich habe noch einen langen Weg vor mir. Danke für die Tipps!
MacManager
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.