Как выполнить пробный запуск команды rm, чтобы увидеть, какие файлы будут удалены?

Вопрос или проблема

Я хочу увидеть, какие файлы будут удалены при выполнении команды rm в Linux. Большинство команд, кажется, имеют опцию “dry run”, чтобы показать такую информацию, но я не могу найти такую опцию для rm. Возможно ли это?

Предположим, вы хотите выполнить:

rm -- *.txt

Вы можете просто выполнить:

echo rm -- *.txt

или даже просто:

echo *.txt

чтобы увидеть, какие файлы rm удалит, потому что именно оболочка разворачивает *.txt, а не rm.

Единственный случай, когда это не поможет, это для rm -r.

Если вы хотите удалить файлы и каталоги рекурсивно, вы можете использовать find вместо rm -r, например:

find . -depth -name "*.txt" -print

затем, если это делает то, что вам нужно, измените -print на -delete:

find . -depth -name "*.txt" -delete

(-delete подразумевает -depth, мы все равно добавляем его, как рекомендуется в руководстве GNU find).

Вы можете сказать:

rm -i

чтобы запустить его в интерактивном режиме, так rm будет запрашивать у вас подтверждение, нужно ли удалить каждый файл. Вы можете просто ответить “нет” для каждого файла, чтобы увидеть, какие из них будут затронуты.

Вы можете использовать ls, чтобы перечислить все файлы, которые будут удалены с помощью rm:

ls ../path/*.txt

Если вам нужно перечислить файлы, которые будут удалены с помощью рекурсивной команды rm, используйте флаг -R с ls:

ls -R ../path/*.txt

Просто хотел с опозданием указать на удобное решение, которое Joshua упомянул в комментариях:

yes n | rm -i myFile1 myFile2 myFile3

Это запускает rm в интерактивном режиме, который запрашивает ответ y/n для каждого файла, который будет удален, но с помощью yes n автоматически отклоняет этот запрос для каждого файла. Вывод не очень красивый, но его можно анализировать с небольшим постобработкой.

вместо rm вы также можете использовать gtrash put -- files, чтобы переместить их в корзину. Пожалуйста, попробуйте это с тестовым файлом сначала.

Ответ или решение

В данном случае, вы хотите провести "пробный запуск" команды rm в Linux для оценки, какие файлы будут удалены до фактического выполнения команды. Стандартно, команда rm не предоставляет опции "dry run", однако существуют альтернативные методы для достижения подобного результата.

Расширение оболочки и команда echo:

Если вашей целью является удаление определённой группы файлов, например, всех текстовых файлов *.txt, вы можете использовать команду echo для предварительного просмотра, какие файлы подлежат удалению. Следующие команды помогут вам в этом:

echo rm -- *.txt

или просто

echo *.txt

Эти команды используют механизм расширения файловых масок (globbing), встроенный в оболочку командной строки, чтобы показать список файлов, которые будут затронуты.

Использование команды find:

В случае, если вы рассматриваете рекурсивное удаление файлов и директорий с помощью rm -r, рекомендуется воспользоваться командой find. Это может быть полезно для сложных сценариев, включая рекурсивные файловые структуры:

find . -depth -name "*.txt" -print

Эта команда рекурсивно ищет все текстовые файлы и выводит их на экран. После проверки вы можете изменить -print на -delete, чтобы удалить файлы:

find . -depth -name "*.txt" -delete

Взаимодействие с пользователем:

Команда rm -i позволяет запускать rm в интерактивном режиме, запрашивая подтверждение перед удалением каждого файла:

rm -i *.txt

Для автоматического отклонения всех запросов на удаление можете использовать:

yes n | rm -i *.txt

Альтернативные способы проверки:

Ещё один вариант — использование команды ls для предварительного отображения списка файлов:

ls ../path/*.txt

Для рекурсивного поиска используйте флаг -R:

ls -R ../path/*.txt

Перемещение в корзину:

Если вам необходимо безопасно удалить файлы, рассмотрите возможность использования команды gtrash для перемещения файлов в корзину:

gtrash put -- *.txt

Перед применением этого метода протестируйте его на одном файле, чтобы избежать нежелательных потерь данных.

В заключение, несмотря на отсутствие стандартной опции "dry run" в rm, комбинация вышеописанных приемов позволяет с уверенностью предсказать результат выполнения команды, обеспечивая точность и безопасность ваших операций с файлами.

Оцените материал
Добавить комментарий

Капча загружается...