Поиск по сайту:

Как удалить все файлы в папке, кроме одного конкретного файла в Linux

Допустим, у вас в папке более 100 файлов. Вы хотите удалить их все, кроме одного или нескольких конкретных файлов. Как бы вы это сделали? Вы можете скопировать файлы, которые хотели сохранить, и сохранить их в другом месте, а затем удалить остальные файлы или всю папку. Но подождите, я знаю самый простой способ сделать это. Вы можете удалить все старые файлы, кроме одного конкретного файла или файлов определенного типа, за один раз, с помощью одной строки команды. Хотите знать, как? Читай дальше.

Удалить все файлы в папке, кроме одного конкретного файла

Представим себе следующий пример. У нас есть папка под названием «test», содержащая 10 текстовых файлов.

ls test/

Пример вывода:

file10.txt file2.txt file4.txt file6.txt file8.txt
file1.txt file3.txt file5.txt file7.txt file9.txt

Теперь я хочу удалить все в этой папке, кроме file10.txt.

Для этого может быть много команд. Но это пять команд, которые я знаю.

Сначала перейдите в папку test:

cd test/

И выполните следующую команду:

rm -f !(file10.txt)

Или просто используйте:

rm !(file10.txt)

Приведенная выше команда удалит все файлы в тестовой папке, кроме файла file10.txt .

Вы также можете использовать команду find, чтобы удалить все, кроме определенного. Следующая команда удалит все файлы в текущей папке (т.е. в нашем случае test), кроме file10.txt.

find . ! -name file10.txt -delete

Как вы видите в приведенном выше примере, тестовая папка содержит файлы того же типа, то есть файлы .txt. Что бы вы сделали, если бы в папке были файлы другого типа, например .mp3, .doc, .pdf и т. д.? Также легко сохранить файлы определенного типа в папке и удалить все остальное.

Допустим, наша тестовая папка содержит три файла .txt, три файла .mp3, три файла .doc и один файл .pdf.

ls test/

Пример вывода:

total 0
-rw-r--r-- 1 sk users 0 Mar 22 15:51 file10.pdf
-rw-r--r-- 1 sk users 0 Mar 22 15:51 file1.txt
-rw-r--r-- 1 sk users 0 Mar 22 15:51 file2.txt
-rw-r--r-- 1 sk users 0 Mar 22 15:51 file3.txt
-rw-r--r-- 1 sk users 0 Mar 22 15:51 file4.mp3
-rw-r--r-- 1 sk users 0 Mar 22 15:51 file5.mp3
-rw-r--r-- 1 sk users 0 Mar 22 15:51 file6.mp3
-rw-r--r-- 1 sk users 0 Mar 22 15:51 file7.doc
-rw-r--r-- 1 sk users 0 Mar 22 15:51 file8.doc
-rw-r--r-- 1 sk users 0 Mar 22 15:51 file9.doc

Как и в приведенном выше выводе, у меня в тестовой папке есть файлы четырех разных типов (pdf, txt, mp3, doc). Я хотел бы сохранить файлы с расширением .doc и удалить все остальное. Вот как я могу это сделать:

cd test/
rm !(*.doc)

Теперь давайте перечислим содержимое файла с помощью команды:

ls

Пример вывода:

file7.doc  file8.doc  file9.doc

Приведенная выше команда удаляет все в папке, кроме файлов с расширением .doc.

Точно так же вы можете сохранить два или более определенных типов файлов и удалить все остальное. Скажем, например, следующая команда сохранит файлы, содержащие расширения .doc и .mp3.

rm !(*.doc|*.mp3)

Теперь вы увидите, что файлы mp3 и doc не удалены.

ls

Пример вывода:

file4.mp3  file5.mp3  file6.mp3  file7.doc  file8.doc  file9.doc

Это всего лишь десять разных типов файлов. Просто представьте, что у вас есть сотни файлов. Было бы сложнее найти каждый тип файлов и удалить их вручную. Этот трюк выполнит всю работу всего за одну или две секунды.

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

Рекомендуем прочитать:

  • Предотвращение случайного удаления или изменения файлов и папок в Linux
  • Простой способ защитить файлы от случайного удаления в Linux

Надеюсь это поможет. Если вы найдете это руководство полезным, поделитесь им в своих социальных и профессиональных сетях и поддержите нас.

Впереди еще больше хороших вещей. Следите за обновлениями!

Ваше здоровье!

Статьи по данной тематике