Как удалить файлы на основе определенного шаблона из определенного года - PullRequest
0 голосов
/ 03 октября 2019

Я хочу удалить файлы, которые содержат ak в любом месте их имени, с 2017, 2016 или любого другого случайного года. Я знаю, что это неправильно, так как я не думаю, что вы можете передать команду 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

, так что это мой вывод, моя команда пыталась найти дату отсюда, она должна вернуть и удалить

-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

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Когда вы говорите о «дате в имени файла», кажется, вы имеете в виду «из прошлого года».

Вы можете удалить файлы с помощью « find * 1006». * "фильтрация точных нужных вам дат

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 .
$ 
0 голосов
/ 03 октября 2019

эта команда поможет вам. будь осторожен

 ls -ltr --full-time  *ak*  | grep '2017' | awk '{print $9}' | xargs rm -rf

другой гарантийный способ фильтрации даты и имени файла

ls -ltr --full-time  *ak* | awk '{print $6,  $9}'  | grep '2017' | awk '{print $2}' | xargs rm -rf
...