我有一个存档文件夹,里面有一些包含存档文件的子文件夹(如A,B,C)。如何查找和删除我想要的子文件夹(比方说B)中最早创建的文件?
答案 0 :(得分:1)
此命令可以完全按照您的意愿执行,
find . -mindepth 2 -type f -printf '%T+ %p\n' | sort | awk 'NR==1{print $2}' | xargs rm -v
简要说明,
find . -mindepth 2 -type f -printf '%T+ %p\n'
:将最小深度限制为2,这意味着find
只会显示子目录下的文件,甚至更远。然后打印文件的最后修改时间及其名称。find ...
的输出传输到sort
,以对所有找到的文件的修改时间进行排序。awk 'NR==1{print $2}'
:将输出传输到awk
以获取最旧文件的名称xargs rm -v
:删除最旧的文件<强> Eidt 强>
对于使用变量传递子目录名称的进一步请求,这里是要使用的修改方法。您只需要修改awk
部分,
$ a="sub_dir1"
$ b="sub_dir2"
$ find ... | sort | awk -v a=$a -v b=$b '$2 ~ "./" a "/" || $2 ~ "./" b "/"{print $2 ;exit}' | xargs ...
答案 1 :(得分:0)
如果您要删除最早修改的文件(未创建),则可以使用:
rm "$(ls -t | tail -1)"