Да, rm *.xvgудаляются только файлы, оканчивающиеся .xvgна текущий каталог. Вот почему
Когда вы набираете команду, подобную этой, работа распределяется между используемой оболочкой (предположим, bash) и двоичным файлом команды.
Вы можете найти двоичный файл, набрав which rm. Эта маленькая программа заботится о том, чтобы не связывать файлы. Такие программы могут быть запущены из командной строки и могут читать список аргументов prog arg1 arg2 arg3при запуске. В случае rm, они интерпретируются как список полностью определенных имен файлов, которые будут удалены. Так что, если вы находитесь в каталоге, содержащем файл foo.bar, ввод delete 'foo.*'приведет к rm: foo.*: No such file or directory. Обратите внимание на одинарные кавычки вокруг шаблона файла, они говорят оболочке передавать аргумент в оболочку как она есть.
Однако, если вы введете rm *.barв тот же каталог, файл будет удален. Здесь происходит то, что ваша оболочка, то есть программа, которую вы используете для ввода команд, выполняет некоторые преобразования перед передачей аргументов в команду. Один из них называется «расширение имени файла», иначе известный как «глобализация». Вы можете увидеть список расширений имени bash-файла здесь . Одним из наиболее распространенных расширений является *расширение имен файлов в текущем каталоге.
Простой способ взглянуть на глобусы в работе - использовать echo, который возвращает все аргументы, переданные ему через оболочку. Таким образом, ввод echo *в том же каталоге будет выводить foo.bar. Поэтому, когда вы печатаете rm *.bar, на самом деле происходит то, что оболочка расширяет список аргументов foo.bar, а затем передает это rmкоманде.
Есть несколько способов контроля за сгущением. Например, в последних версиях bash вы можете включить опцию globstar, которая будет выполнять рекурсивное расширение. При наборе echo **/*.barбудет показан список всех файлов, заканчивающихся .barво всех подпапках. Поэтому ввод rm **/*.barв globstar с включенным bash действительно рекурсивно удалит все соответствующие файлы в подпапках.
rm -f {*.xvg,.*.xvg}удалить также скрытые файлы. Иrm -R -f {*.xvg,.*.xvg}убрать также каталоги.