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

Что относительно recordmydesktop? С gui фронтэндом GtkRecordMyDesktop.

Примечание: Прежде чем вниз голоса отмечают, что это было первым ответом.

36
26.08.2015, 17:28
4 ответа

Да, rm *.xvg только удалит файлы с указанным расширением в Вашем текущем каталоге.

Хороший способ удостовериться Вы находитесь действительно в каталоге, который Вы хотите, удаляют Ваши файлы, должен использовать pwd команда, которая отобразит Ваш текущий каталог и затем сделает ls для проверки Вы находите файлы, которые Вы ожидаете.

Если Вы - бит, опасающийся об издании rm команда, существует 2 вещи, которые можно сделать:

  1. ввести ls *.xvg видеть список того, какие файлы были бы затронуты этой командой.

  2. Если у Вас нет большого количества файлов, Вы могли всегда также использовать -i переключатель командной строки для rm (также существует для cp и mv). Используя rm -i *.xvg предложил бы Вам каждый отдельный файл, если бы было нормально удалять его, таким образом, Вы не могли быть уверены ничто, что Вы не ожидали, становился удаленным. (Это будет утомительно, если у Вас будет много файлов хотя :)

35
27.01.2020, 19:36
  • 1
    Также: rm -f {*.xvg,.*.xvg} удалить также скрытые файлы. И rm -R -f {*.xvg,.*.xvg} удалить также каталоги. –  Dor 24.01.2014, 12:03

Вы не должны перейти к dir, просто использовать

rm /some/dir/*.xvg 

В случае у Вас есть опечатка или подобная ошибка в пути, где/som/dir не существует:

cd /som/dir
rm *.xvg

случайно удалит все .xvg-файлы в текущем dir. Первая команда не будет, и Вам не нужно к CD назад снова.

Альтернативный путь состоял бы в том, чтобы использовать, найдите:

find /some/dir/ -maxdepth 1 -type f -name "*.xvg" -delete 
20
27.01.2020, 19:36
  • 1
    находит/some/dir/-maxdepth 1 - тип f - называет "*.xvg" - удаляют работавший для меня! используйте-maxdepth "n" для удаления соответствия файлам в подкаталоге если данный путь –  Vinay 03.06.2015, 11:56

Да, rm *.xvg только удалит файлы, заканчивающиеся .xvg в Вашем текущем каталоге. Вот то, почему.

При вводе команды как это работа разделена между оболочкой, которую Вы используете (давайте примем удар), и двоичный файл команды.

Можно определить местоположение двоичного файла путем ввода which rm. Эта небольшая программа заботится об удалении связи с файлами. Программы как это могут быть запущены из командной строки и могут прочитать список аргументов prog arg1 arg2 arg3 когда они запускают. В случае rm, они интерпретируются как список полностью определенных имен файлов, которые будут удалены. Таким образом, если Вы находитесь в каталоге, содержащем файл foo.bar, ввод delete 'foo.*' приведет к rm: foo.*: No such file or directory. Отметьте одинарные кавычки вокруг шаблона файла, они говорят оболочке передавать аргумент оболочке как есть.

Однако, если Вы вводите rm *.bar в том же каталоге это удалит файл. То, что происходит, вот то, что Ваша оболочка, которая является программой, которую Вы используете для ввода в командах, выполняет некоторые преобразования перед передачей аргументов команде. Один из них называют 'расширением имени файла', иначе знают как 'globbing'. Вы видите список расширений имени файла удара здесь. Одно из наиболее распространенных расширений *, который расширен до имен файлов в текущем каталоге.

Простой способ посмотреть на шарики на работе состоит в том, чтобы использовать echo, то, которое печатает назад все аргументы, передало ему через оболочку. Так ввод echo * в том же каталоге произведет foo.bar. Таким образом, когда Вы вводите rm *.bar, то, что на самом деле происходит, - то, что оболочка разворачивает список аргументов до foo.bar, затем передачи это к rm команда.

Существуют некоторые способы управлять globbing. В последних версиях удара, например, можно включить опцию, названную globstar, который сделает рекурсивное расширение. Ввод echo **/*.bar покажет список всех файлов, заканчивающихся в .bar во всех подпапках. Так ввод rm **/*.bar во включенном ударе globstar действительно рекурсивно удалит все файлы соответствия в подпапках.

3
27.01.2020, 19:36

Команда:

  rm./*.pgm

у меня работает

Команда:

rm *.pgm

выдает команду ошибки (на польском языке, в переводе):

rm: wrong option - '1'
Use "rm./-1000.pgm" to delete the file '-1000.pgm'.
Write "rm --help" for information.

в

bash --version
GNU bash, wersja 4.4.19(1)-release (x86_64-pc-linux-gnu)
2
27.01.2020, 19:36

Теги

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