從子目錄中的文字檔案中尋找檔案清單並將其放入 tarball 中?

從子目錄中的文字檔案中尋找檔案清單並將其放入 tarball 中?

我有一個需要 tar 的文件列表。通常,我會使用

tar -cvf allfiles.tar -T mylist.txt

但我發現我需要的檔案分散在子目錄中,我的清單只有檔案名稱而不是路徑。

有沒有辦法將“find”與 tar 命令結合起來,在我的列表中查找檔案(無論它們位於子目錄中的任何位置)?

答案1

您可以使用名稱清單和 來尋找路徑find,但是當您在不同目錄中具有相同名稱的檔案時,您可能會遇到一些特殊情況。

如果這並不重要,您可以執行以下操作:

find <main_directory> | grep -f mylist.txt

然後,使用該清單來執行您的tar命令。完整的命令可能如下所示:

tar cvf allfiles.tar -T <(find <main_directory> |
    grep -f mylist.txt --color=never)

注意你必須使用--color=never,否則,如果您的 grep 的顏色處於活動狀態,您將為 發送無效的輸入tar

忽略大小寫區別,在本例中, in grep,這實際上是文件,您只需添加標誌即可-i

tar cvf allfiles.tar -T <(find <main_directory> |
    grep -i -f mylist.txt --color=never)

相關內容