我有以下文件夹:
1435773881 Jul 1 21:04
1435774663 Jul 2 21:17
1435774856 Jul 3 21:20
1435775432 Jul 4 21:56
我需要使用bash脚本删除较旧的文件夹文件夹(上例中的1435773881
)。
我应该使用什么命令?
答案 0 :(得分:3)
你可以做到
ls -lt | tail -1 | awk '{print $NF}' | xargs rm -rf
ls -lt | tail -1
显示按日期排序目录后的最后一行awk '{print $NF}'
“打印”最后一列(目录名称)xargs rm -rf
删除该目录答案 1 :(得分:1)
假设您只想删除当前文件夹中最旧的文件:
rm -rf "$(ls -t | tail -1)";
因为您特别要求提供绝对路径的方法:
rm -rf "$1/$(ls -t "$1" | tail -1)";
将上面的剪辑包含在函数中......
function removeOldest
{
rm -rf "$1/$(ls -t "$1" | tail -1)";
}
...或名为removeOldest
#!/bin/bash
rm -rf "$1/$(ls -t "$1" | tail -1)";
并将其称为
removeOldest /path/to/the/directory
如果您想将其嵌入脚本中,只需将$1
直接替换为路径。
另请注意,如果指定的目录根本不包含任何文件,则会自行删除 如果您想阻止它,请使用
toBeDeleted="$(ls -t "$1" | tail -1)";
if [ ${#toBeDeleted} -gt 0 ] && [ -d "$1/$toBeDeleted" ]; then
rm -rf "$1/$toBeDeleted";
fi;