我尝试创建一个bash命令/脚本,用于删除某个子字符串开头且X天前的目录中的所有文件。
例如,如果我们的目录包含以下文件:
我们想要删除所有
例如,如果我们的目录包含以下文件:
-rw-r--r-- 1 root root 0 Jun 30 10:22 foo_5
-rw-r--r-- 1 root root 0 Jun 29 10:22 bar_4
-rw-r--r-- 1 root root 0 Jun 29 10:22 foo_4
-rw-r--r-- 1 root root 0 Jun 28 10:22 bar_3
-rw-r--r-- 1 root root 0 Jun 28 10:22 foo_3
-rw-r--r-- 1 root root 0 Jun 27 10:22 bar_2
-rw-r--r-- 1 root root 0 Jun 27 10:22 foo_2
-rw-r--r-- 1 root root 0 Jun 26 10:22 foo_1
我们想要删除所有
foo*
文件,但保留最近的两个。这将导致目录:-rw-r--r-- 1 root root 0 Jun 30 10:22 foo_5
-rw-r--r-- 1 root root 0 Jun 29 10:22 bar_4
-rw-r--r-- 1 root root 0 Jun 29 10:22 foo_4
-rw-r--r-- 1 root root 0 Jun 28 10:22 bar_3
-rw-r--r-- 1 root root 0 Jun 27 10:22 bar_2
目前我只能删除除最近的两个文件以外的所有文件,这将影响bar*
文件。
ls -t | tail -n +4 | xargs rm --
我们如何限制删除以特定字符串开头的文件?
创建测试文件的代码:
(
touch -d "6 days ago" foo_5
touch -d "7 days ago" foo_4
touch -d "7 days ago" bar_4
touch -d "8 days ago" foo_3
touch -d "8 days ago" bar_3
touch -d "9 days ago" foo_2
touch -d "9 days ago" bar_2
touch -d "10 days ago" foo_1
)
ls -t foo*
。 - MichalHfind
呢?如果你想查找修改时间,可以查找-mtime
属性;如果只想查找访问时间,则只需查找-atime
。 - Inianfind
。 - Inian