首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux中每个文件的查找和tar

Linux中每个文件的查找和tar
EN

Stack Overflow用户
提问于 2014-09-08 11:09:49
回答 2查看 1.9K关注 0票数 1

我有一个不同修改时间的文件列表,1_raw,2_raw,3_raw.我希望找到10多天前修改过的文件,并压缩它们以释放磁盘空间。然而,该命令:

代码语言:javascript
复制
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.

有这样的事吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-08 11:15:07

就像你想要的那样:

代码语言:javascript
复制
find . -mtime +10 -type f -print0 | while IFS= read -r -d '' file; do
   tar -cvzf "${file}.tar.gz" "$file"
done

添加了-type f,所以它也不处理目录,只处理文件。

这将在所有子目录中添加10多天前修改的每个文件的压缩存档,并将压缩存档放在其各自未存档版本的旁边(在同一个文件夹中)。我想这就是你想要的。

如果您不需要处理路径中的空白空间,那么只需:

代码语言:javascript
复制
for f in $(find . -mtime +10 -type f) ; do
  tar -cvzf "${f}.tar.gz" "$f"
done
票数 1
EN

Stack Overflow用户

发布于 2019-02-27 01:46:12

简单地,试试这个

代码语言:javascript
复制
$ find . -mtime +10 | xargs -I {} tar czvf {}.tar.gz {}

这里,{}指示替换-str- -I替换-str替换在初始-参数中出现的替换-str,其中包含从标准输入读取的名称。此外,没有引号的空格不会终止输入项;相反,分隔符是换行符。意味着-x和-L 1. https://linux.die.net/man/1/xargs

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25722928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档