![Eine Liste von Dateien aus einer Textdatei in Unterverzeichnissen suchen und in ein Tarball-Archiv packen?](https://rvso.com/image/1345259/Eine%20Liste%20von%20Dateien%20aus%20einer%20Textdatei%20in%20Unterverzeichnissen%20suchen%20und%20in%20ein%20Tarball-Archiv%20packen%3F.png)
Ich habe eine Liste der Dateien, die ich tarnen muss. Normalerweise würde ich verwenden
tar -cvf allfiles.tar -T mylist.txt
Ich habe jedoch festgestellt, dass die benötigten Dateien in Unterverzeichnissen verstreut sind und meine Liste nur die Dateinamen und nicht die Pfade enthält.
Gibt es eine Möglichkeit, „find“ mit dem Tar-Befehl zu kombinieren, um die Dateien auf meiner Liste zu finden, egal wo sie in Unterverzeichnissen abgelegt sind?
Antwort1
Sie können die Pfade mithilfe Ihrer Namensliste und finden find
, aber es kann sein, dass Sie in einen kleinen Sonderfall geraten, der vorliegt, wenn Sie die Dateien mit dem gleichen Namen in unterschiedlichen Verzeichnissen haben.
Wenn es nicht wirklich wichtig ist, können Sie Folgendes tun:
find <main_directory> | grep -f mylist.txt
Und dann verwenden Sie die Liste für Ihren tar
Befehl. Der vollständige Befehl kann folgendermaßen aussehen:
tar cvf allfiles.tar -T <(find <main_directory> |
grep -f mylist.txt --color=never)
Bemerke Dichmussverwenden Sie --color=never
, andernfalls würden Sie ungültige Eingaben für senden, wenn Farben für Ihr grep aktiv sind tar
.
Um Fallunterscheidungen zu ignorieren, in diesem Fall in grep
, das ist das, was tatsächlichFilterungDateien können Sie einfach das Flag hinzufügen -i
:
tar cvf allfiles.tar -T <(find <main_directory> |
grep -i -f mylist.txt --color=never)