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.txt
dorthin, nachdem es erstellt wurde.
Antwort1
mkdir
gibt nichts aus und xargs
tut 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?