Я хочу создать простой bash-скрипт, который проверяет, содержит ли каталог все файлы, имена которых содержат числа от 1 до N.
# Creating some files for testing
$ cd /tmp/
$ mkdir test
$ touch test/a01x.dat
$ touch test/b02y.dat
# Display dir contents
$ ls test/*{01,02}*
test/a01x.dat test/b02y.dat
Но использование seq
команды для генерации чисел приводит к следующему:
$ ls test/*{$(seq -s , -f "%02g" 1 2)}*
ls: cannot access 'test/*{01,02}*': No such file or directory
Я понимаю, что выполнение команды, заключив путь в одинарные кавычки, должно привести к ошибке, так как символы подстановки не расширяются
$ ls 'test/*{01,02}*'
Но я не использовал их. В чем проблема?
cannot access
об ошибке ls
всегда показывает имя, о котором идет речь, в кавычках, что никак не связано с вашей проблемой. Это может зависеть от версии ls
, хотя. Попробуйте что-то вродеls foo "foo "
ls test/*{01,02}*
кажется, ваше указывает на это ...)? Кроме того, в каком формате будут цифры? Если N = 100, вы будете использовать 001 или 1 или ?? начать?