Как я могу объединить команду find с другими командами, чтобы мне не приходилось переходить к папке?

Иногда я хочу запустить определенные файлы, но не хочу полностью переходить к папке.

Если я знаю имя файла и find -name file_name.py возвращает только один результат, могу ли я просто использовать это?

Например, вместо того, чтобы полностью перейти к определенной папке и вызвать:

python file_name.py

Могу ли я написать:

python [ find -name file_name.py ] 

или

python [ locate file_name.py ]

Или какой-то вариант «поиска по всему моему компьютеру по этому имени файла и его использование» ? Желательно в одну строку.

7
задан 22 April 2014 в 09:45

5 ответов

Я думаю, что Вы ищете:

python $(find -name myscript.py)
0
ответ дан 22 April 2014 в 09:45

Добавьте строку shopt -s globstar к файлу .bashrc в Вашем корневом каталоге. (Чтобы просто испытать это введите это на командной строке, она только вступит в силу в Вашей текущей оболочке.)

Тогда можно использовать **/ для значения “in текущий каталог или подкаталог и так далее recursively”, т.е. то же самое как простого find команды.

python **/myscript.py

Протест: **/ символьные ссылки пересечений на каталоги, тогда как find не делает. В ударе Вы не можете избежать этого. В zsh, **/ доступно из поля и не пересекает символьные ссылки (существует ***/ для редких случаев, где Вы хотите пересечь символьные ссылки).

0
ответ дан 22 April 2014 в 09:45

Только, чтобы показать, что всегда существует больше чем один способ сделать вещи (даже, не используя Perl):

find -name file_name.py -exec python {} \;

будет работать также. Исполнительная опция находки выполняет следующую команду для каждого файла, который это находит. В этой команде {} действия, поскольку заполнитель для файла, и \; показывает конец команды.

0
ответ дан 22 April 2014 в 09:45

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

file=`find -name file_name.py` && python $file

find -name file_name.py будет искать файлы, названные file_name.py, и хранить результат в file переменная и если команда, за которой следуют (результаты получены без ошибок), Python, интерпретирует $file.

0
ответ дан 22 April 2014 в 09:45

Другой:

xargs -0 python < <(find -name my_script.py -print0 -quit)

Теперь, как присвоение домашней работы, попытка определить профессионалов, недостатки и различия всех методик, представленных здесь.

0
ответ дан 22 April 2014 в 09:45

Другие вопросы по тегам:

Похожие вопросы: