Eine Liste von Dateien aus einer Textdatei in Unterverzeichnissen suchen und in ein Tarball-Archiv packen?

Eine Liste von Dateien aus einer Textdatei in Unterverzeichnissen suchen und in ein Tarball-Archiv packen?

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 tarBefehl. 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)

verwandte Informationen