我有一个不同修改时间的文件列表,1_raw,2_raw,3_raw... 我想找到超过 10 天前修改的文件并压缩它们以释放磁盘空间。但是,命令:
find . -mtime +10 |xargs tar -cvzf backup.tar.gz
将创建一个新文件backup.tar.gz
我想要的是为每个文件创建一个 tarball,以便我可以在需要时轻松解压缩每个文件。命令后,我的文件应该变成:1_raw.tar.gz, 2_raw.tar.gz, 3_raw.tar.gz...
有没有办法做到这一点?谢谢!
最佳答案
这样的事情就是您所追求的:
find . -mtime +10 -type f -print0 | while IFS= read -r -d '' file; do
tar -cvzf "${file}.tar.gz" "$file"
done
添加了 -type f
以便它不处理目录,只处理文件。
这会在所有子目录中添加 10 多天前修改过的每个文件的压缩存档,并将压缩存档放在其各自的未存档版本旁边(在同一文件夹中)。我想这就是您想要的。
如果你不需要处理路径中的空格,你可以简单地做:
for f in $(find . -mtime +10 -type f) ; do
tar -cvzf "${f}.tar.gz" "$f"
done
关于linux - 在 Linux 中为每个文件查找和 tar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25722928/