У меня есть папка, которая должна содержать 1000 файлов с именем out_x.dat , где x это число от 1 до 1000. Когда я делаю ls out_* | wc -l , я вижу, что есть 996 файлов. Я хотел бы знать, какие четыре отсутствуют. Как мне этого добиться? Я могу перечислить существующие файлы с этим:

ls out* | awk -F '_' '{ print $2}' 

Есть ли что-то, что позволит мне перечислить те, которые не существуют в 1000 файлах?

1 ответ1

4

Вы можете использовать простой скрипт для проверки существования каждого файла по очереди, например:

for (( i=1; i<=1000; ++i )); do [ -e out_$i.dat ] || echo out_$i.dat missing; done

Если число отформатировано, скажем, до 4 цифр, командную строку можно уточнить так:

for (( i=1; i<=1000; ++i )); do printf -v n out_%04d.dat $i; [ -e $n ] || echo $n missing; done

В качестве альтернативы (благодаря комментарию @ dave_thompson_085):

for i in {0001..1000}; do [ -e out_$i.dat ]  || echo out_$i.dat missing; done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .