Иногда я хочу запустить определенные файлы, но не хочу полностью переходить к папке.
Если я знаю имя файла и find -name file_name.py
возвращает только один результат, могу ли я просто использовать это?
Например, вместо того, чтобы полностью перейти к определенной папке и вызвать:
python file_name.py
Могу ли я написать:
python [ find -name file_name.py ]
или
python [ locate file_name.py ]
Или какой-то вариант «поиска по всему моему компьютеру по этому имени файла и его использование» ? Желательно в одну строку.
Я думаю, что Вы ищете:
python $(find -name myscript.py)
Добавьте строку shopt -s globstar
к файлу .bashrc
в Вашем корневом каталоге. (Чтобы просто испытать это введите это на командной строке, она только вступит в силу в Вашей текущей оболочке.)
Тогда можно использовать **/
для значения “in текущий каталог или подкаталог и так далее recursively”, т.е. то же самое как простого find
команды.
python **/myscript.py
Протест: **/
символьные ссылки пересечений на каталоги, тогда как find
не делает. В ударе Вы не можете избежать этого. В zsh, **/
доступно из поля и не пересекает символьные ссылки (существует ***/
для редких случаев, где Вы хотите пересечь символьные ссылки).
Только, чтобы показать, что всегда существует больше чем один способ сделать вещи (даже, не используя Perl):
find -name file_name.py -exec python {} \;
будет работать также. Исполнительная опция находки выполняет следующую команду для каждого файла, который это находит. В этой команде {}
действия, поскольку заполнитель для файла, и \;
показывает конец команды.
Вы могли сохранить вывод находки к переменной и сделать то, что Вы хотите с ним следующим образом:
file=`find -name file_name.py` && python $file
find -name file_name.py
будет искать файлы, названные file_name.py
, и хранить результат в file
переменная и если команда, за которой следуют (результаты получены без ошибок), Python, интерпретирует $file
.
Другой:
xargs -0 python < <(find -name my_script.py -print0 -quit)
Теперь, как присвоение домашней работы, попытка определить профессионалов, недостатки и различия всех методик, представленных здесь.