Linux
如何使用正則表達式從 TAR 存檔中排除文件?
我有一個簡單的問題,但我無法找到或解決答案。我想製作一個 tar 存檔,但我想使用正則表達式從中排除一些文件。
要排除的文件範例如下:
68x640X480.jpg
我試過這個沒有運氣:
tar cvf test.tar --exclude=[0-9]+x[0-9X]+\.jpg /data/foto
有人可以幫忙嗎?
您可以使用一些額外的工具,例如
find
和egrep
:find directory/ -type f -print | egrep -v '[0-9]+x[0-9X]+\.jpg' | tar cvfz directory.tar.gz -T -
上述方法的缺點是它不適用於所有可能的文件名。另一個機會是使用內置的排除功能
tar
:tar -czvf directory.tar.gz --exclude='*x*X*.jpg' directory
不幸的是,第二種方法不適用於正則表達式,而只能用於萬用字元。
也許你應該試試cpio
https://www.gnu.org/software/cpio/manual/cpio.html
它從文件列表中讀取並進行歸檔。您可以使用sed生成文件列表,如下所示。
ls |sed '/[0-9]*x[0-9]*X.*/d' >/tmp/files
然後,您可以將其用作 cpio 的輸入。