Linux

如何使用正則表達式從 TAR 存檔中排除文件?

  • June 6, 2020

我有一個簡單的問題,但我無法找到或解決答案。我想製作一個 tar 存檔,但我想使用正則表達式從中排除一些文件。

要排除的文件範例如下:68x640X480.jpg

我試過這個沒有運氣:

tar cvf test.tar --exclude=[0-9]+x[0-9X]+\.jpg /data/foto

有人可以幫忙嗎?

您可以使用一些額外的工具,例如findegrep

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 的輸入。

引用自:https://serverfault.com/questions/320729