Как «rm» или «mv» диапазон файлов, таких как file01.txt, file02.txt ... file85.txt

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

file01.txt file02.txt file03.txt ... file20.txt

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

Я знаю, если хотите «rm» из «file05.txt» в «file09.txt», я могу сделать:

rm file0[5-9].txt

но как я могу 'rm' диапазон от file08.txt до file13.txt? Я пробовал этот код

rm file[08-13].txt

и он не работает. Я могу выполнить эту команду:

rm file0[89].txt file1[0-3].txt

, но я хотел бы знать, могу ли я сделать это только с еще одним уточненным аргументом в «rm», если это возможно.

22 голоса | спросил Cesare Fusari 7 AM000000110000000931 2016, 11:05:09

1 ответ


37

Вам нужно использовать расширение скобки bash:

rm file{08..13}.txt

Это приведет к удалению файлов file08 в file13, покажет сообщение об ошибке, если файл отсутствует.

Задайте диапазон, соответствующий вашим потребностям.


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

Если вы настаиваете на использовании [], вы можете использовать этот довольно уродливый шаблон для соответствия file08 до file13:

rm file0[8-9].txt file1[0-3].txt
ответил heemayl 7 AM000000110000004431 2016, 11:06:44

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132