Как подать команду под bash ro удалить все файлы в текущем каталоге с 2-значными именами?

Я сделал все возможные комбинации, которые могу придумать:

rm -r ?? .
rm -r [??].
rm -r ??.

Я не перечисляю другие, которые я придумал, но у меня нет идей здесь.

2 ответа2

3

Я спросил в комментарии выше, было ли это для удаления двухсимвольных имен файлов в текущем каталоге или в текущем каталоге и подкаталогах. Я перечислю оба решения здесь:

Чтобы удалить файлы с именем файла длиной 2 символа в текущем каталоге

rm ??

Чтобы удалить файлы с именем файла длиной 2 символа в текущем каталоге, а также подкаталогах:

find . -name '??' -exec rm -rf {} \;

Это немного сложнее, так как имена файлов берутся по пути при переходе по подкаталогам. Вместо того, чтобы пытаться выяснить это с помощью команды rm , мы используем find по имени с ?? для подстановочного знака из 2 символов, а затем используйте опцию -exec чтобы выполнить команду rm для всего, что найдено {} .

0

Используйте find с exec . Сначала сделайте пробный запуск, как этот, чтобы убедиться, что вы не действуете на вещи, на которые вы не хотите действовать:

find . -maxdepth 1 -type f -name '??' -exec ls -latr {} \;

Затем, когда вы уверены, что это работает так, как вы хотите, запустите это:

find . -maxdepth 1 -type f -name '??' -exec rm -rf {} \;

Также обратите внимание на maxdepth . Это будет содержать ваши действия только в текущем каталоге. Без maxdepth команда find будет распространяться по всей вашей системе, просто делая что-либо с именами из двух символов. Конечно, увеличьте maxdepth чтобы он соответствовал любой глубине, на которую вы хотите пойти, но помните, что вы рискуете повредить свою систему, если не используете это, и выполните несколько тестов пробного запуска на логике find перед запуском rm -rf .

В GNU find (который есть в большинстве дистрибутивов Linux) вы также можете использовать опцию -delete вместо -exec rm -rf {} \; , -delete может быть немного более эффективным, поскольку ему не нужно вызывать внешнюю команду, но это не является частью спецификации POSIX.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .