Спробуйте це:
for file in file{18..31}.txt
Він відомий як "вираз послідовності" і є частиною функції розширення дужок Баша . Він працює в Bash 3 і 4.
Функція приросту нова для Bash 4. У вас, ймовірно, є Bash 3.x.
У Bash 4 ви можете:
$ for i in {1..6..2}; do echo $i; done
1
3
5
Але в Bash 3 вам потрібно зробити це, щоб отримати ті ж результати:
$ for ((i=1; i<=6; i+=2)); do echo $i; done
Приріст однакової форми на одну:
$ for ((i=1; i<=6; i++)); do echo $i; done
Будь-яке з чисел може бути змінним чи виразом. Однак у виразі послідовності числа повинні бути константами
Ось приклад використання цієї форми у ваших файлах:
for ((i=18; i<=31; i++))
do
echo "file${i}.txt"
done
Ще одна нова особливість виразів послідовностей у Bash 4 - це можливість включати провідні нулі. Це корисно, якщо ви хочете створити (і використовувати) пронумеровані файли, які можна правильно сортувати.
У Bash 4:
touch file{001..010}.txt
створив би файли з назвою "file001.txt" через "file010.txt". Їх імена сортуватимуть у очікуваному порядку. Без провідних нулів "file10.txt" буде сортувати перед "file1.txt".
Для роботи з файлами ви можете використовувати той самий провідний нульовий синтаксис:
for file in file{001..010}.txt; do echo "$file"; done
У Bash 3, якщо вам потрібні провідні нулі, вам потрібно прокладати значення самостійно:
for i in {1..10}
do
printf -v i '%03d' $i
echo "file${i}.txt"
done
Оператор printf
додає значення i з провідними нулями, так що ширина становить 3, наприклад ("4" стає "004").
Редагувати:
Розміщення пробілів у назви файлів просто:
$ touch "space name "{008..018..3}" more spaces"
$ ls -l sp*
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000008 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000011 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000014 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000017 more spaces
$ for f in "space name "{008..018..3}" more spaces"; do mv "$f" "${f}.txt"; done
$ ls -l sp*
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000008 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000011 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000014 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000017 more spaces.txt
for
цикл, який дозволяє пропускати файли файлів за допомогою xargs. Здається, це працює, якщо у вас немає bash 4. Якщо у вас bash 4, то обов'язково використовуйте розширення дужок! Дивіться вибрану відповідь. Безсоромна плагін для оновлення Snow Leopard bash