Verwenden von Bash
Nehmen wir also an, ich habe eine Reihe von Dateien zufällig in einem übergeordneten Verzeichnis abgelegt. ~/src
Ich möchte alle Dateien abrufen, die einem bestimmten Suffix entsprechen, und sie in ein ~/dist
Verzeichnis verschieben (oder kopieren) .
Nehmen wir zu diesem Zweck an, dass alle Dateinamen diese Namenskonvention haben:
<filename_prefix>.<filename_suffix>
Ich fand heraus, dass dies eine schnelle Möglichkeit war, alle Dateien mit einem bestimmten filename_suffix
Ordner abzurufen und in einem dist-Ordner abzulegen:
mkdir ~/dst
find source -name "*.xxx" -exec mv -i {} -t ~/dst \;
Nun noch einen Schritt weiter ... Wie kann ich in diesem Fall die Ausgabe von find verwenden filename
und mit die filename_prefix
Option ein Verzeichnis mit demselben Namen generieren ~/dist
und dann alle Dateien mit diesem Präfix in das entsprechende Verzeichnis verschieben (oder kopieren)?
mkdir ~/dst
find source -name "*.xrt,*.ini,*.moo" -exec mv -i {} -t ~/dst \;
Wie ändere ich im Wesentlichen den obigen Befehl (oder verwende möglicherweise einen anderen Befehl), um eine Struktur wie diese zu erstellen
(AUSGABE)
~/dist/people/people.xrt
~/dist/games/games.xrt
~/dist/games/games.moo
~/dist/games/games.ini
~/dist/monkeys/monkeys.ini
~/dist/monkeys/monkeys.xrt
aus einem Verzeichnisbaum wie diesem?
(EINGANG)
~/src/xrt/people.xrt
~/src/xrt/games.xrt
~/src/conf/games.ini
~/src/pack/monkeys.xrt
~/src/e344/games.moo
~/src/e344/monkeys.moo
~/src/en-us/monkeys.ini
quelle
shopt -s globstar
, siehe meine Bearbeitung. Wenn es nur zwei Ebenen gibt, können Sie diese verwenden*/*.*
und das Snippet funktioniert in jeder Shell.Betrug finden Befehlszeile:
Eigentlich eine Lösung für den Aufruf von Bash-Skript in Find LOL.
= P.
quelle
happy rm -rf /
! Diese Art von Code verdient eine -1.Yay" rm -rf / "Rox0r.avi
. Auch hier gibt es ein Problem…-exec bash -c 'command which uses "$1"' bash '{}' ';'
. Nun, es ist sowieso ziemlich sinnlos.