![從子目錄中的文字檔案中尋找檔案清單並將其放入 tarball 中?](https://rvso.com/image/1345259/%E5%BE%9E%E5%AD%90%E7%9B%AE%E9%8C%84%E4%B8%AD%E7%9A%84%E6%96%87%E5%AD%97%E6%AA%94%E6%A1%88%E4%B8%AD%E5%B0%8B%E6%89%BE%E6%AA%94%E6%A1%88%E6%B8%85%E5%96%AE%E4%B8%A6%E5%B0%87%E5%85%B6%E6%94%BE%E5%85%A5%20tarball%20%E4%B8%AD%EF%BC%9F.png)
我有一個需要 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)