У меня есть много файлов с именем
sequence_1_0001.jpg
sequence_1_0002.jpg
sequence_1_0003.jpg
...
и файлы с именем
sequence_1_0001.hmf
sequence_1_0002.hmf
sequence_1_0003.hmf
...
и файлы с именем
sequence_2_0001.jpg
sequence_2_0002.jpg
sequence_2_0003.jpg
...
а также
sequence_2_0001.hmf
sequence_2_0002.hmf
sequence_2_0003.hmf
...
Я просто хочу удалить файлы, которые начинаются с 'sequence_1' и заканчиваются на '.hmf', но я не хочу удалять их один за другим, поскольку существуют тысячи файлов. Как мне указать команде rm, что я хочу удалить все, которые начинаются с префикса 'sequence_1' и заканчиваются на '.hmf'?
В настоящее время я работаю с системой RedHat Linux, но я хотел бы знать, как это сделать и в других дистрибутивах.
find
подход становится проще, чем угадывать и проверять.Хотя ответ jw013 является правильным по отношению к глобализации, эта команда может потерпеть неудачу, если у вас есть тысячи совпадений: расширенная командная строка,
rm sequence_1_0001.hmf sequence_1_0002.hmf ...
сгенерированная оболочкой, может быть просто слишком большой.Как предложил Dom, вы также можете использовать
-delete
опцию сfind
:И то,
-maxdepth
и другое-delete
, хотя и не входит в стандарт POSIX , довольно часто встречаются вfind
реализациях на свободе. В дистрибутивах Linux обычно используется GNUfind
, который, безусловно, поддерживает эти опции.источник
-delete
должно поддерживаться в последних системах GNU и BSD, пока-print0
только для GNU. Так что он, вероятно, более переносим (хотя это не должно иметь значения для ОП).будет работать тоже в Bash.
источник
bash
, и я считаю, что для формы с нулевой подкладкой нужна версия 4.