需要压缩特定大小的单个文件并删除 unix 中的原始文件
Need to zip individual files of certain size & remove the original files in unix
我想压缩从输出中获得的单个文件并删除原始文件。 objective 用于查找大于 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
用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
的目录路径部分,在末尾追加一个.zip
;例如,如果 $f
是 test1/file.txt
,那么 $z
将是 file.txt.zip
。
如果您还想用 .zip
替换文件扩展名,那么您可以使用 z=${f##*/} z=${z%.*}.zip
代替。
zip
的-j
选项用于剥离ZIP压缩包内的目录路径。
zip
的 -m
选项用于在成功生成 ZIP 存档后删除输入文件。
我想压缩从输出中获得的单个文件并删除原始文件。 objective 用于查找大于 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
用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
的目录路径部分,在末尾追加一个.zip
;例如,如果$f
是test1/file.txt
,那么$z
将是file.txt.zip
。
如果您还想用.zip
替换文件扩展名,那么您可以使用z=${f##*/} z=${z%.*}.zip
代替。zip
的-j
选项用于剥离ZIP压缩包内的目录路径。zip
的-m
选项用于在成功生成 ZIP 存档后删除输入文件。