Удалить все файлы с определенным именем во вложенных каталогах - PullRequest
0 голосов
/ 14 апреля 2020

У меня следующая файловая структура:

/opt/Data/1
/opt/Data/2
/opt/Data/3

/opt/Data/1/Collection1/a/travel
/opt/Data/1/Collection2/a/travel
/opt/Data/1/Collection3/a/travel
/opt/Data/1/Collection4/a/travel
...
/opt/Data/1/Collection100/a/travel


/opt/Data/2/Collection1/a/travel
/opt/Data/2/Collection2/a/travel
/opt/Data/2/Collection3/a/travel
/opt/Data/2/Collection4/a/travel
...
/opt/Data/2/Collection100/a/travel


/opt/Data/3/Collection1/a/travel
/opt/Data/3/Collection2/a/travel
/opt/Data/3/Collection3/a/travel
/opt/Data/3/Collection4/a/travel
...
/opt/Data/3/Collection100/a/travel

В каталоге 'travel' у меня есть несколько файлов с датой в начале, например "2020-03-17-".

Я хочу удалить все эти файлы ТОЛЬКО в путевых каталогах.

Как бы я это сделал?

Я пробовал следующее:

for i in /opt/Data/*/*/a/travel; do find "$i" -name 2020-03-17* -exec rm {}; done; 

Это дает мне ошибку nd: missing argument to -exec, которую я не могу решить.

Любая помощь будет оценена.

Спасибо

1 Ответ

0 голосов
/ 14 апреля 2020

Вы были близки, но, видимо, здесь oop не требуется. Просто выберите файлы, путь которых соответствует */travel/2020-03-17-*, и удалите их.

find /opt/Data -type f -path '*/travel/2020-03-17-*' -exec echo rm {} +

Предполагается, что в travel нет каталога , имя которого начинается с 2020-03-17-.

Если вывод выглядит хорошо, сбросьте echo.

...