Meine list.txt
Datei hat ein paar hundert Einträge, die auf Dateinamen zeigen, die auf der /tmp
Partition liegen. Ich sammle Dateien, die mit "a" beginnen, z. B. apples.txt
, andromeda.txt
usw., um sie in ein Verzeichnis zu kopieren.AIX Unix-Befehl zum Abrufen des ersten Elements, dann zum nächsten gehen
aber ich will nicht all die Dateien kopieren, sondern nur die ersten Datei gefunden. Es muss nicht sortiert werden; nur der erste.
Wie mache ich das? Irgendwelche Tipps sind willkommen.
#!/bin/bash
for i in `/usr/bin/cat /tmp/list.txt`
do
find /tmp/$i -name a* -exec cp {} /tmp/found_first_file_start_with_a \;
done
Sie mich verloren. Wenn '/ tmp/list.txt' * file * Namen enthält, warum verwenden Sie' find' (das Verzeichnisse als Positionsparameter verwendet)? –
Durchsuchen Sie nicht einfach die Datei ('list.txt') nach der ersten Zeile, wo die letzte Komponente des Namens mit' a' beginnt? Die Verwendung von 'find' scheint so verschwenderisch zu sein, es sei denn, einige der Namen wurden möglicherweise entfernt, bevor Sie die Kopie erstellen können (und es gibt verschiedene Möglichkeiten, falls dies zu Ihrem Problem gehört). Vielleicht 'sed -n '\%/a [^ /] * $% {p; q;}'/tmp/list.txt'? –
Die angenommene Antwort stimmt nicht mit meiner Interpretation Ihrer Frage überein: 'Für alle Unterverzeichnisse von/tmp geben Sie in /tmp/list.txt eine Datei beginnend mit dem Buchstaben a in ein anderes Verzeichnis'. Können Sie Ihre Frage so bearbeiten, dass andere verstehen, was Sie wollten und warum Sie list.txt verwenden? –