我正在创建一个定时任务,用于清除指定文件夹下的子目录(仅限第一层)中除最近两个文件以外的所有文件,但是遇到了问题。
以下是我的尝试:
以下是我的尝试:
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
我也尝试创建一个文件数组,的确可以通过总数减2,但是这个数组并没有填充所有文件:
while read -rd ''; do x+=("${REPLY#* }"); done < <(find . -maxdepth 2 -printf '%T@ %p\0' | sort -r -z -n )
请问有人能帮助我并解释一下他们是怎么做的吗?
ls -1t ./ | tail -n +4
,在这种方法中你遇到了什么问题? - abasu