gaz*_*i86 3 linux bash ubuntu-12.04
我正在创建一个cron,它清除除最近两个文件之外的所有指定文件夹的子目录(仅限第一个子目录)但遇到问题.
这些是我的尝试:
find ./ -type d -exec rm -f $(ls -1t ./ | tail -n +4);
find . -maxdepth 2 -type f -printf '%T@ %p\0' | sort -r -z -n | awk 'BEGIN { RS="\0"; ORS="\0"; FS="" } NR > 5 { sub("^[0-9]*(.[0-9]*)? ", ""); print }' | xargs -0 rm -f
Run Code Online (Sandbox Code Playgroud)
我还试图创建一个文件数组,目的是通过总减2,但数组没有填充所有文件:
while read -rd ''; do x+=("${REPLY#* }"); done < <(find . -maxdepth 2 -printf '%T@ %p\0' | sort -r -z -n )
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解释一下他们是怎么做的吗?
rzy*_*mek 12
这列出了除最近的两个文件之外的所有文件:
find -type f -printf '%T@ %P\n' | sort -n | cut -d' ' -f2- | head -n -2
Run Code Online (Sandbox Code Playgroud)
说明:
-type f 仅列出文件-printf '%C@ %P\n'
%T@ 显示文件自1970年以来的最后修改时间(以秒为单位). %P 显示文件名| sort -n 做一个数字排序| cut -d' ' -f2- 删除秒格式输出,只留下文件名 | head -n -2 显示除最后两行之外的所有行因此,要删除所有这些文件,只需通过xargs rm或附加管道xargs rm -f:
find -type f -printf '%T@ %P\n' | sort -n | cut -d' ' -f2- | head -n -2 | xargs rm
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3077 次 |
| 最近记录: |