我想壓縮從輸出中獲得的單個檔案并洗掉原始檔案。目標是找到大于 9MB 的檔案并單獨壓縮該大小的每個檔案并洗掉其原始實體。像這樣的東西。。
find test* -type f - size 9M
zip -m <filenames (from the above output)> <individual filename.zip>
預期輸出 -
test_abc1.txt.1.zip
test_abc2.txt.2.zip
test_abc3.txt.zip
uj5u.com熱心網友回復:
對于使用 zip 壓縮單個檔案find,主要問題是如何自動生成 zip 檔案名;find -exec為此,您可以在行內腳本中使用 shell 引數擴展:
find test* -type f -size 9M -exec sh -c '
for f
do
z=${f##*/}.zip
zip -j -m "$z" "$f"
done
' _ {}
筆記:
z=${f##*/}.zip剝離目錄路徑組件并在末尾$f附加 a.zip;例如,如果$f是test1/file.txt,那么$z將是file.txt.zip。
如果您還想替換檔案擴展名,.zip則可以使用z=${f##*/} z=${z%.*}.zip。的
-j選項zip用于剝離 ZIP 存檔中的目錄路徑。-m選項用于在zip成功生成 ZIP 存檔后洗掉輸入檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/475721.html
