Подтвердить что ты не робот

Могу ли я использовать подстановочные знаки оболочки для выбора имен файлов, расположенных в двухзначных числах (например, от foo_1.jpg до foo_54.jpg)?

У меня есть каталог с файлами изображений foo_0.jpg до foo_99.jpg. Я хотел бы скопировать файлы foo_0.jpg через foo_54.jpg.

Возможно ли это с помощью bash подстановочных знаков?

Я думаю что-то вроде cp foo_[0-54].jpg, но я знаю, что это выбирает 0-5 и 4 (правильно?)

Кроме того, если это невозможно (или эффективно) с помощью только подстановочных знаков, что было бы лучшим способом сделать это?

Спасибо.

4b9b3361

Ответ 1

Я предполагаю, что вы хотите скопировать эти файлы в другой каталог:

cp -t target_directory foo_{0..54}.jpg

Ответ 2

Мне нравится glenn jackman, но если вы действительно хотите использовать globbing, следующие могут также работать на вас:

$ shopt -s extglob
$ cp foo_+([0-9]).jpg $targetDir

В расширенном globbing +() соответствует одному или нескольким экземплярам любого выражения в круглых скобках.

Теперь это скопирует ВСЕ файлы с именем foo_, за которым следует любое число, а затем .jpg. Это будет включать foo_55.jpg, foo_139.jpg и foo_1223218213123981237987.jpg.

С другой стороны, glenn jackman имеет лучший ответ. Но это дало мне возможность поговорить о расширенном globbing.

Ответ 3

ls foo_ [0-9].jpg foo_ [1-4] [0-9].jpg foo_5 [0-4].jpg

Попробуйте с помощью ls, и если это будет хорошо для вас, сделайте копию.

Ответ 4

for i in `seq 0 54`; do cp foo_$i.jpg <target>; done