Unix 如何从特定年份删除基于特定模式的文件

Unix 如何从特定年份删除基于特定模式的文件,unix,grep,find,rm,Unix,Grep,Find,Rm,我想从2017年或2016年或任何其他随机年份删除文件名中任何位置包含ak的文件。我知道这是错误的,因为我认为您无法通过管道连接到rm命令。如果发现可能更好,我愿意接受建议 ls -ltr *ak* | grep '2017' | rm -rf ls-ltr(文件名中任意位置包含x)| grep(x年)| rm-rf 然而,这没有任何作用 -rw-rw---- 1 abinitio 0 2017 13:49 ks -rw-rw---- 1 abinitio

我想从2017年或2016年或任何其他随机年份删除文件名中任何位置包含ak的文件。我知道这是错误的,因为我认为您无法通过管道连接到rm命令。如果发现可能更好,我愿意接受建议

ls -ltr *ak* | grep '2017' | rm -rf
ls-ltr(文件名中任意位置包含x)| grep(x年)| rm-rf 然而,这没有任何作用

-rw-rw----   1   abinitio       0 2017 13:49 ks
-rw-rw----   1   abinitio       0 Sep 26 13:49 ks.txt
-rw-rw----   1   abinitio       0 Oct  3 15:35 a.txt
-rw-rw----   1   abinitio       0 Oct  3 15:35 abak.txt
-rw-rw----   1   abinitio       0 Oct  3 15:36 raks.txt
-rw-rw----   1   abinitio       0 Oct  3 15:36 aks.txt
这是我的输出,我的命令试图从这里grep它应该返回和删除的日期

-rw-rw----   1   abinitio       0 Oct  3 15:35 abak.txt
-rw-rw----   1   abinitio       0 Oct  3 15:36 raks.txt
-rw-rw----   1   abinitio       0 Oct  3 15:36 aks.txt

此命令将帮助您。 小心

ls-ltr——全职*ak*| grep'2017'| awk'{print$9}'| xargs rm-rf
当你谈论“文件名上的日期”时,你的意思似乎是 “从过去的一年”

您可以使用“”删除文件,筛选所需的确切日期

find . -name "*ak*" -newermt $DATEA -not -newermt $DATEB -exec rm {} \+
检查它是否工作:

$ cat script.sh
  DATEA=$1
  DATEB=$2
  find . -name "*ak*" -newermt $DATEA -not -newermt $DATEB -exec rm {} \+
$ ls -lrta
 total 0
 -rw-rw-rw- 1 unixuser unixuser   0 Dec 31  2011 ak1
 -rw-rw-rw- 1 unixuser unixuser   0 Dec 31  2012 ak2
 -rw-rw-rw- 1 unixuser unixuser   0 Dec 31  2018 ak3
 drwxrwxrwx 1 unixuser unixuser 512 Oct  4 02:21 ..
 -rw-rw-rw- 1 unixuser unixuser   0 Oct  4 02:24 ak
 -rwxrwxrwx 1 unixuser unixuser 115 Oct  4 02:25 script.sh
 drwxrwxrwx 1 unixuser unixuser 512 Oct  4 02:25 .
$ ./script.sh 20120101 20190101
$ ls -lrta
total 0
-rw-rw-rw- 1 unixuser unixuser   0 Dec 31  2011 ak1
drwxrwxrwx 1 unixuser unixuser 512 Oct  4 02:21 ..
-rw-rw-rw- 1 unixuser unixuser   0 Oct  4 02:24 ak
-rwxrwxrwx 1 unixuser unixuser 115 Oct  4 02:25 script.sh
drwxrwxrwx 1 unixuser unixuser 512 Oct  4 02:25 .
$ 

find
是一种合理的方法,但循环实现不是这样的-请看哈哈@EdMorton,时间太晚了,而且我不像你那样是awk/sed神!!!!:)你的意思是-xargs???@EdMorton,现在我理解了-exec更好!!!:)如果我错了,请纠正我!!!非常感谢您的文化和共享知识
-exec
xargs
都很好,甚至可以按照常见问题解答中所示而不是按照您编写的方式实现循环。你不需要逃避
+
顺便说一句。你好@EdMorton我觉得自己像个坏学生:)我实际上想问“xargs rm-rf”这个命令为什么不起作用。@ErdalTuran,Ed是一个很有知识的人!!经常阅读他的文章并考虑他的意见!!)他让我们大家都在学习!!