Как запустить программу для каждого файла в каталоге

Итак, у меня есть файл Python file.py. И у меня есть каталог, в котором много файлов .txt. Итак, мне было интересно, как мне сделать python3 file.py txt1.txt, python3 file.py txt2.txt и так далее для каждого txt-файла в каталоге?


person John Sean    schedule 02.04.2020    source источник
comment
вы пытаетесь прочитать каждый файл с расширением .txt?   -  person user1318723123    schedule 03.04.2020
comment
@мидризи да! это правильно   -  person John Sean    schedule 03.04.2020


Ответы (2)


Вот альтернативное решение с использованием find:

find /path/to/your/txtfiles/*.txt -type f -exec python3 file.py {} \;

Мне нравится find, потому что я думаю, что это упрощает рекурсивный поиск в каталогах при соблюдении определенных условий.

Здесь -type f выбирает только обычные файлы, а -exec запускает ваш скрипт с подстановкой имени файла вместо фигурных скобок.

person terafl0ps    schedule 02.04.2020

Просто направьте вывод ls (отфильтровав нужные файлы) в стандартный ввод xargs:

❯❯❯ ls *.txt | xargs -I{} python3 file.py {}
person Abhishek Jaisingh    schedule 02.04.2020
comment
Нет, не используйте ls. Оболочка уже расширяется *.txt еще до запуска ls. Тогда и xargs тоже не нужно. - person tripleee; 03.04.2020