Попробуй это:
for file in file.txt
Он известен как «выражение последовательности» и является частью функции расширения скобок Bash . Работает в Баш 3 и 4.
Функция приращения является новой для Bash 4. Возможно, у вас есть Bash 3.x.
В Bash 4 вы можете сделать:
$ for i in ; 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$.txt" done
Еще одна новая особенность выражений последовательностей в Bash 4 - возможность включать ведущие нули. Это полезно, если вы хотите создать (и использовать) пронумерованные файлы, которые можно правильно отсортировать.
В Bash 4:
touch file.txt
создаст файлы с именами «file001.txt» - «file010.txt». Их имена будут отсортированы в ожидаемом порядке. Без начальных нулей, file10.txt будет отсортирован перед file1.txt.
Для работы с файлами вы можете использовать тот же синтаксис начального нуля:
for file in file.txt; do echo "$file"; done
В Bash 3, если вам нужны начальные нули, вам нужно добавить значение самостоятельно:
for i in do printf -v i '%03d' $i echo "file$.txt" done
Оператор printf
добавляет к значению i начальные нули, поэтому ширина равна 3, например («4» становится «004»).
Редактировать:
Аранжировать пробелы в именах файлов просто:
$ touch "space name "" 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 "" more spaces"; do mv "$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