Итак, у меня есть файл Python file.py
. И у меня есть каталог, в котором много файлов .txt
. Итак, мне было интересно, как мне сделать python3 file.py txt1.txt
, python3 file.py txt2.txt
и так далее для каждого txt-файла в каталоге?
Как запустить программу для каждого файла в каталоге
Ответы (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
Нет, не используйте
ls
. Оболочка уже расширяется *.txt
еще до запуска ls
. Тогда и xargs
тоже не нужно.
- person tripleee; 03.04.2020
.txt
? - person user1318723123   schedule 03.04.2020