bash - 仅压缩新文件而不再次压缩旧文件更改其时间戳
问题描述
场景:在文件夹 1 上:运行此命令后,我们有 file1.repo 文件 2.repo 文件 3.repo:
/usr/bin/find $folder/*.repo -print -exec sh -c "gzip < {} > {}.gz" \;
它将所有文件压缩为 file1.repo.gz ,file2.repo.gz, file3.repo.gz
我的问题是我如何防止在运行多次命令后再次压缩相同的文件,并且只压缩文件夹中添加的新文件,(该命令再次创建具有不同时间戳的文件 {1,2,3}.repo.gz 并保留文件夹上的原始文件{1,2,3}.repo)
我需要的是仅压缩文件夹中添加的新文件,而无需再次压缩更改时间戳的旧文件
解决方案
只需检查*file1.repo.gz
目标中是否已存在,如果存在则跳过。
#!/bin/bash
sourceFolder="/path/to/source"
destinationFolder="/path/to/destination"
for f in $( /usr/bin/find $sourceFolder/*.repo ); do
if ! [ -f "$destinationFolder/*$f*" ]; then
gzip -c $f > $destinationFolder/$f.gz
fi
done
它在给定的源文件夹中查找每个文件*.repo
,然后检查其中是否*.gz
已经存在于目标文件夹中,如果存在则跳过它;否则 if*.gz
将其放入目标文件夹。
编辑:忘记设置存档名称。