我想在大多数情况下,提取 tar 存档时,我们会得到一个与存档文件同名但后缀不同的目录。但在某些不幸的情况下,就像我今天遇到的那样,提取 tarball 后,我发现工作目录中散布着许多文件,这很麻烦。
所以我想向您学习的是 - 我该如何移动这些新创建的文件?我知道应该有一些“find plus rm”的花哨方法,但我不知道具体怎么做。
答案1
不知道man find
会怎么说。那你就可以展示你的努力了。
find . -type f -cmin -1
find . -type f -cmin -1 -delete
- 用于
-type f
指定仅选择常规文件。 - 该
-cmin -1
文件的状态最后一次改变是在不到一分钟的时间内。 - 该
-delete
标志告诉 find 删除已知宇宙中的所有电子文件或类似的东西,因此使用时要小心。
首先进行试运行没有-delete
强烈推荐该标志。
注意这-delete
是一个不可移植的扩展。
我建议find
在使用它之前先阅读手册页,因为它涵盖了可能适用于您的情况的各种陷阱和警告。
答案2
find . -mtime -60s -exec mv {} /dest/dir \;
查找当前目录(和子目录)中过去 60 秒内修改过的每个文件并将其移动到 /dest/dir。
答案3
最简单的方法(如果你没有图形界面)是使用麦克. 它可以按日期对文件进行排序。
您还可以从命令行删除 tar 中的文件:
> rm $( tar -ztf mytar.tar.gz )
(-ztf) 适用于 tar.gz 文件。您可以使用 (-tf) 来处理普通 tar 文件,或使用 (-jtf) 来处理 tar.bz2 文件。
如果文件列表太大,上述命令会卡住,您可以使用 xargs:
> tar -ztf mytar.tar.gz | xargs rm