Як відкрити кілька файлів з виводу `find`?


10

Я знаю, що можу відкрити кілька файлів, знайдених у режимі, як:

find -name *.foo -xargs <command> {} \;

Це працює, але при спробі відкрити купу текстових файлів в gedit одночасно, він відкриває їх послідовно (коли один файл закритий, наступний відкривається).

Я хотів би відкрити всі ці файли одночасно. Як я можу цього досягти?

Відповіді:


15

Щоб діяти з декількома файлами одночасно find, використовуйте +замість \;:

find . -name '*.foo' -exec gedit {} +

З zsh або з bash ≥4, якщо ви вводите shopt -s globstarсвій ~/.bashrc, ви можете використовувати **/для повторного переходу в підкаталоги:

gedit **/*.foo

Zsh також має багато глобальних класифікаторів, які можуть замінити більшість застосувань find.


хтось може підказати, як запустити його на Mac OS X?
andilabs

@andi вирішив сам. Але якщо хтось запропонує дещо коротше або змусить SublimeText відкриватися в окремі вкладки, а не вікна, це буде значно прихильне.
andilabs

@andi Це проблема із SublimeText, ви повинні задати її окремо.
Жил "ТАК - перестань бути злим"

все-таки я думаю, що мова йде про точний формат bash, тому що якщо я запускаю, наприклад, open -a SublimeText admin.py forms.pyвін відкриється в одному вікні з двома вкладками.
andilabs

2

На Mac OS X bash ви можете запустити щось на кшталт:

for file in $(find . -name "*.py"); do open -a SublimeText $file; done. 

Одним недоліком є ​​те, що воно відкривається у новому вікні Sublime замість використання нової вкладки.


0

Я думаю, що в цьому випадку ви могли б скористатися

find ./ -name \*.foo | xargs gedit

1
Це не спрацює, якщо ім'я файлу містить спеціальні символи (пробіл або \'"), оскільки xargsвимагає, щоб його введення було процитовано таким чином, що findне створює. Або використовувати find … -print0 | xargs -0 …, або використовувати простіше find … -exec … {} +.
Жил "ТАК - перестань бути злим"

Крім того, хоча це не застосовується в цьому випадку, -print0 | xargs -0є проблема, що stdin був забитий, і він більше не приєднаний до терміналу. Проблема, якщо ви намагаєтесь скористатися редактором текстового режиму.
derobert
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.