Bash 如何删除shell上超过x秒(不是天、小时或分钟)的文件?

Bash 如何删除shell上超过x秒(不是天、小时或分钟)的文件?,bash,awk,Bash,Awk,关于如何在linux上删除早于x分钟/小时/天的文件,有很多问题,但没有人能够解决秒的问题 我找到了这个解决方案: for file in `ls -ltr --time-style=+%s | awk '{now=systime(); del_time=now-30; if($6<del_time && $5=="0") print $7}'` ;do rm -f $file >/dev/null 2>&1 done 对于`ls-ltr--ti

关于如何在linux上删除早于x分钟/小时/天的文件,有很多问题,但没有人能够解决秒的问题

我找到了这个解决方案:

for file in `ls -ltr --time-style=+%s | awk '{now=systime(); del_time=now-30; if($6<del_time && $5=="0") print $7}'` ;do
   rm -f $file >/dev/null 2>&1
done

对于`ls-ltr--time style=+%s | awk'{now=systime();del|u time=now-30;如果($6我发现一个解决方案是替换
systime()
命令,并像这样使用
日期+%s

for file in $(ls -ltr --time-style=+%s | awk '{cmd="date +%s"; cmd|getline now; close(cmd);del_time=now-30; if($6<del_time) print $7}') ;do
   rm -f $file >/dev/null 2>&1
done

for file in$(ls-ltr--time style=+%s|awk'{cmd=“date+%s”cmd | getline now;close(cmd);del|u time=now-30;if($6解析
ls
的输出总是一种糟糕的方法。尤其是当GNU Findutils的
find
能够自己完成所有工作时:

$ find -not -newermt '-30 seconds' -delete

您不应该使用旧的和过时的backtics,请使用以下括号:
表示$(ls-ltr--time style=+%s | awk'{cmd=“date+%s”cmd | getline now;close(cmd);del|u time=now-30;如果($6从不解析ls的输出…文件名可能包含奇怪的字符(如
\n
…如果需要,可以解析ls-ltr,因为每个文件名位于不同的行上。如果功能相同,也可以使用反勾号。反勾号过时且不相同,这就是反勾号违反最佳做法的原因。最重要的区别是括号可以嵌套,而背虱不能。这太棒了!谢谢。