Удаление всех файлов, содержащих строку в их имени

Ubuntu поддерживает все диски, установленные в медиа-каталоге, поэтому используйте

cd /media/<your drive name>
0
задан 22 February 2018 в 10:50

6 ответов

Если вы действительно хотите это сделать, вы можете использовать эту команду find, но перед этим вы должны протестировать без переключателя -delete, чтобы проверить, что вы ожидаете:

find ./mail -depth -path '*gmai*' -delete

Рекурсивный в все sub-dirs

С помощью комментария от @David Foerster и моей исходной команды

4
ответ дан 22 May 2018 в 12:59

Если вы действительно хотите это сделать, вы можете использовать эту команду find, но перед этим вы должны протестировать без переключателя -delete, чтобы проверить, что вы ожидаете:

find ./mail -depth -path '*gmai*' -delete

Рекурсивный в все sub-dirs

С помощью комментария от @David Foerster и моей исходной команды

4
ответ дан 17 July 2018 в 20:22

Если вы действительно хотите это сделать, вы можете использовать эту команду find, но перед этим вы должны протестировать без переключателя -delete, чтобы проверить, что вы ожидаете:

find ./mail -depth -path '*gmai*' -delete

Рекурсивный в все sub-dirs

С помощью комментария от @David Foerster и моей исходной команды

4
ответ дан 23 July 2018 в 21:03

whereis(1) не подходит для вашей цели, поскольку это не инструмент поиска имени пути по умолчанию.

Без индекса поиска

Как отметил Гилл в своем ответе, вы можете используйте whereis(1) для этого задания, но я хочу сделать небольшое, но значительное улучшение1:

find [PATH...] -depth -path '*gmai*' -print # -delete

Объяснение:

find [PATH...] проходит через все файлы и подкаталоги под каждым PATH или текущими рабочими каталогами, если путь не указан, и печатает все совпадения (по умолчанию). -path PATTERN соответствует полному пути к PATTERN, используя globbing if any, поэтому *gmai* соответствует всем именам путей с инфикс gmai. -delete удаляет все согласованные пути (и переопределяет действие по умолчанию для их печати). -depth указывает find на соответствие детям перед родителями, т.е. е. записи каталога перед самими родительскими каталогами. Необходимо удалить детей перед родителями, потому что в семантике файловой системы Unix можно удалить только пустые каталоги. -print печатает все согласованные пути. Используйте это, чтобы проверить результат перед фактическим удалением. Комментарий в команде -delete (удалив # перед ним), чтобы фактически удалить их.

Без индекс поиска

Если все поисковые места, которые вы собираетесь удалить, появятся в индексе поиска mlocate.db(5), вы можете использовать его для более быстрого поиска:

locate '/your/parent/path/*gmai*'

выполняет поиск всех (индексированных) путей, начинающихся с /your/parent/path/, и имеет инфикс gmai в своем остатке.

Для удаления результатов используйте:

locate -0 '/your/parent/path/*gmai*' | xargs -r -0 -- rm -rf --

Объяснение:

find [PATH...] проходит через все файлы и поддиректории под каждым PATH или текущими рабочими каталогами, если путь не указан, и печатает все совпадения (по умолчанию).

find [PATH...] просматривает все файлы и подкаталоги под каждым PATH или текущие рабочие каталоги, если путь не указан, и распечатывает все совпадения (по умолчанию).

-path PATTERN соответствует полным путям против PATTERN, используя globbing, если таковые имеются, поэтому *gmai* соответствует всем именам путей с помощью инфикс gmai.

-path PATTERN соответствует полным путям против PATTERN, используя globbing if any, поэтому *gmai* соответствует всем именам путей с инфикс gmai.

-delete удаляет все согласованные пути (и переопределяет действие по умолчанию для их печати).

xargs собирает «элементы» со своего ввода, добавляет их в заданная команда и запускает эту команду.

2
ответ дан 22 May 2018 в 12:59

whereis(1) не подходит для вашей цели, поскольку это не инструмент поиска имени пути по умолчанию.

Без индекса поиска

Как отметил Гилл в своем ответе, вы можете используйте whereis(1) для этого задания, но я хочу сделать небольшое, но значительное улучшение1:

find [PATH...] -depth -path '*gmai*' -print # -delete

Объяснение:

find [PATH...] проходит через все файлы и подкаталоги под каждым PATH или текущими рабочими каталогами, если путь не указан, и печатает все совпадения (по умолчанию). -path PATTERN соответствует полному пути к PATTERN, используя globbing if any, поэтому *gmai* соответствует всем именам путей с инфикс gmai. -delete удаляет все согласованные пути (и переопределяет действие по умолчанию для их печати). -depth указывает find на соответствие детям перед родителями, т.е. е. записи каталога перед самими родительскими каталогами. Необходимо удалить детей перед родителями, потому что в семантике файловой системы Unix можно удалить только пустые каталоги. -print печатает все согласованные пути. Используйте это, чтобы проверить результат перед фактическим удалением. Комментарий в команде -delete (удалив # перед ним), чтобы фактически удалить их.

Без индекс поиска

Если все поисковые места, которые вы собираетесь удалить, появятся в индексе поиска mlocate.db(5), вы можете использовать его для более быстрого поиска:

locate '/your/parent/path/*gmai*'

выполняет поиск всех (индексированных) путей, начинающихся с /your/parent/path/, и имеет инфикс gmai в своем остатке.

Для удаления результатов используйте:

locate -0 '/your/parent/path/*gmai*' | xargs -r -0 -- rm -rf --

Объяснение:

find [PATH...] проходит через все файлы и поддиректории под каждым PATH или текущими рабочими каталогами, если путь не указан, и печатает все совпадения (по умолчанию).

find [PATH...] просматривает все файлы и подкаталоги под каждым PATH или текущие рабочие каталоги, если путь не указан, и распечатывает все совпадения (по умолчанию).

-path PATTERN соответствует полным путям против PATTERN, используя globbing, если таковые имеются, поэтому *gmai* соответствует всем именам путей с помощью инфикс gmai.

-path PATTERN соответствует полным путям против PATTERN, используя globbing if any, поэтому *gmai* соответствует всем именам путей с инфикс gmai.

-delete удаляет все согласованные пути (и переопределяет действие по умолчанию для их печати).

xargs собирает «элементы» со своего ввода, добавляет их в заданная команда и запускает эту команду.

2
ответ дан 17 July 2018 в 20:22

whereis(1) не подходит для вашей цели, поскольку это не инструмент поиска имени пути по умолчанию.

Без индекса поиска

Как отметил Гилл в своем ответе, вы можете используйте whereis(1) для этого задания, но я хочу сделать небольшое, но значительное улучшение1:

find [PATH...] -depth -path '*gmai*' -print # -delete

Объяснение:

find [PATH...] проходит через все файлы и подкаталоги под каждым PATH или текущими рабочими каталогами, если путь не указан, и печатает все совпадения (по умолчанию). -path PATTERN соответствует полному пути к PATTERN, используя globbing if any, поэтому *gmai* соответствует всем именам путей с инфикс gmai. -delete удаляет все согласованные пути (и переопределяет действие по умолчанию для их печати). -depth указывает find на соответствие детям перед родителями, т.е. е. записи каталога перед самими родительскими каталогами. Необходимо удалить детей перед родителями, потому что в семантике файловой системы Unix можно удалить только пустые каталоги. -print печатает все согласованные пути. Используйте это, чтобы проверить результат перед фактическим удалением. Комментарий в команде -delete (удалив # перед ним), чтобы фактически удалить их.

Без индекс поиска

Если все поисковые места, которые вы собираетесь удалить, появятся в индексе поиска mlocate.db(5), вы можете использовать его для более быстрого поиска:

locate '/your/parent/path/*gmai*'

выполняет поиск всех (индексированных) путей, начинающихся с /your/parent/path/, и имеет инфикс gmai в своем остатке.

Для удаления результатов используйте:

locate -0 '/your/parent/path/*gmai*' | xargs -r -0 -- rm -rf --

Объяснение:

find [PATH...] проходит через все файлы и поддиректории под каждым PATH или текущими рабочими каталогами, если путь не указан, и печатает все совпадения (по умолчанию).

find [PATH...] просматривает все файлы и подкаталоги под каждым PATH или текущие рабочие каталоги, если путь не указан, и распечатывает все совпадения (по умолчанию).

-path PATTERN соответствует полным путям против PATTERN, используя globbing, если таковые имеются, поэтому *gmai* соответствует всем именам путей с помощью инфикс gmai.

-path PATTERN соответствует полным путям против PATTERN, используя globbing if any, поэтому *gmai* соответствует всем именам путей с инфикс gmai.

-delete удаляет все согласованные пути (и переопределяет действие по умолчанию для их печати).

xargs собирает «элементы» со своего ввода, добавляет их в заданная команда и запускает эту команду.

2
ответ дан 23 July 2018 в 21:03

Другие вопросы по тегам:

Похожие вопросы: