So verschieben Sie eine Datei mit dem Namen fileA.txt
oder fileB.txt
in das unmittelbare übergeordnete Verzeichnis:
find . -maxdepth 4 -type f -name 'file[AB].txt' -execdir mv {} ../ \;
Oder verschieben Sie eine Datei mit dem Namen fileA.txt
oder fileB.bb
in ihr unmittelbares übergeordnetes Verzeichnis:
find . -maxdepth 4 -type f \( -name 'fileA.txt' -o -name 'fileB.bb' \) -execdir mv {} ../ \;
Wie es funktioniert
.
Startetfind
mit dem aktuellen Verzeichnis. (Sie können dies durch ein beliebiges Verzeichnis ersetzen, das Sie möchten.-maxdepth 4
weist an,find
nicht mehr als vier Ebenen tief in die Verzeichnisstruktur einzusteigen.-type f
Sagtfind
, nur nach regulären Dateien zu suchen.-name 'file[AB].txt'
Sagtfind
, nur nach Dateien zu suchen, die dem Glob entsprechenfile[AB].txt
.Alternativ verwenden wir zwei
fileA.txt
oderfileB.bb
zwei-name
Tests, die mit einem logischen-o
-oder ( ) kombiniert und mit Parens gruppiert werden:\( -name 'fileA.txt' -o -name 'fileB.bb' \)
-execdir mv {} ../ \;
sagtfind
zu dem Datei - Verzeichnis chdir und den Shell - Befehl ausführen,mv {} ../
wofind
ersetzen wird{}
mit der Datei tatsächlichen Namen. Der Ausdruck../
ist Unix-Speak für das übergeordnete Verzeichnis. Das nachfolgende\;
Zeichen markiert lediglichfind
das Ende des Shell-Befehls