Verwenden von xargs mit den Befehlen mv und mkdir in Linux

Verwenden von xargs mit den Befehlen mv und mkdir in Linux

Ich versuche, mit dem Befehl ein Verzeichnis zu erstellen mkdir. Ich möchte jedoch eine Teilmenge von Dateien in dieses Verzeichnis verschieben. Ich verstehe, dass ich verwenden kannxargs, meine Versuche sind jedoch fehlgeschlagen. Ich habe beispielsweise versucht mkdir test | xargs -i mv test.text {}. Es erstellt das Verzeichnis, verschiebt die Datei jedoch nicht test.txtdorthin, nachdem es erstellt wurde.

Antwort1

mkdirgibt nichts aus und xargstut daher nichts Nützliches. Ich verstehe nicht genau, was Sie tun möchten, daher sollten Sie Ihre Frage besser erklären.

"möchte eine Teilmenge von Dateien in dieses Verzeichnis verschieben" -> haben die Dateien in dieser Teilmenge ein oder mehrere Merkmale gemeinsam? Wenn ja, verwenden Sie diefindenBefehl wie folgt:

find [conditions] -exec mv "{}" dirname \;

Wenn Sie den Namen des Verzeichnisses nicht zweimal eingeben möchten oder dies über ein Skript tun, können Sie Folgendes tun:

dirname=test
mkdir $dirname && mv filename $dirname

Antwort2

Ich glaube nicht, dass mkdir eine Ausgabe erzeugt, die an xargs weitergeleitet wird.

Die Ausführung von „mkdir test1 test2 testhello3 | grep hello“ erzeugt keine Ausgabe, während die Ausführung von „ls | grep hello“ mir „testhello3“ anzeigt.

Können Sie zuerst die Ordner erstellen und dann ls, dann grep und anschließend xargs verwenden, um dies zu tun?

ls | grep (unique search to get folder name) | xargs -i mv test.txt {}

Vielleicht wären weitere Informationen zu den Kriterien für das Verschieben von Dateien und dergleichen hilfreich.

Antwort3

Meine Vermutung, ähnlich der Antwort von user49740:

mkdir test && find -type f -name 'test.*' -exec mv {} test \;

wie viele verschiedene Verzeichnisse möchten Sie erstellen?

verwandte Informationen