Это не будет делать то, что вы хотите, если в именах ваших файлов есть специальные символы:
$ touch 'name
with newline' 'other name\nwith newline'
$ echo * | xargs -n1 echo
name
with
newline
other
name
with
newline
Если вы просто хотите перечислить файлы, ls -1
. В противном случае используйте find
с флагом -exec
.
Вероятно, что bash
на вашем компьютере с CentOS 5.6 имеет версию 3. Заполнение нулями целых чисел в расширениях фигурных скобок было введено в версии 4 bash
].
Решением было бы либо обновить вашу установку bash
до более новой версии, либо использовать альтернативный способ генерации заполненных нулями целых чисел, например
printf '%02d\n' {8..10}
В качестве альтернативы, что-то вроде строк из
for i in 0{1..9} {10..20}; do
echo "$i"
done
также будет работать.
альтернатива, вы можете использовать команду seq
$ seq -f "%02g" 8 10
08
09
10
Вместо использования bash
вы можете использовать zsh
, откуда взялся этот синтаксис.
zsh
поддерживает {08..10}
с 1995 года (представлено в версии 2.6-beta4), поэтому будет доступен в zsh
любой версии CentOS. (первый выпуск CentOS в 2004 г.).
На самом деле вы использовали синтаксис zsh
в своем примере, так как в bash
вам нужно echo "${i}"
вместо echo ${ i}
для того, чтобы расширение $i
не подвергалось разбиению на слова (и, таким образом, зависело от $IFS
).