我怎么能用bash删除一个旧文件夹?

时间:2015-07-05 12:57:13

标签: bash sh

我有以下文件夹:

1435773881 Jul  1 21:04
1435774663 Jul  2 21:17
1435774856 Jul  3 21:20
1435775432 Jul  4 21:56

我需要使用bash脚本删除较旧的文件夹文件夹(上例中的1435773881)。

我应该使用什么命令?

2 个答案:

答案 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;