Відкрити файл, знайдений за допомогою команди 'find'


12

Це, мабуть, легке, але я не можу це зрозуміти, і це майже не піддається пошуку. У ієрархії папок я маю рівно один файл типу xyz. Я хочу знайти цей файл і відкрити його за допомогою термінальної команди.

find . -name *.xyz

Це поверне файл, який я шукаю. Тепер, як я відкрию його автоматично, не вводячи ім’я?

find . -name *xyz | open

Це не працює. У ньому сказано, що він не знайшов відкриту команду.


3
Що це за файл? Якщо це не виконуваний файл, з якою програмою ви хочете відкрити файл? О, що Windows зробила для нашого населення = /
човен

Це, мабуть, належить
суперпользователю

1
Я на Mac, а не Windows ... і хочу відкрити файл за допомогою програми за замовчуванням.

2
знайти. -ім'я * xyz | xargs відкрити і знайти. -name * .xyz -exec відкрити {} \; обидва працювали. Дякую.

Я радий, що ти знайшов рішення. Не забудьте позначити рішення, яке працювало найкраще для вас. Інші побачать ваше співвідношення «прийняття», і це буде довгий шлях, коли задаватимуть майбутні запитання. Користувачі з меншим коефіцієнтом прийняття часто вважають, що їхні питання ігноруються. =)
матч

Відповіді:


11

@retracile правильний. Вам потрібно відкрити це за допомогою чогось. Однак я вважаю за краще використовувати exec над xargs.

find . -name '*.xyz' -exec cat {} \;

це повернеться cat fileFound.xyz; cat fileFound2.xyx;тощо. Однак ви очікуєте знайти лише один файл.

зауважте, що зміна \;на +повернеться cat fileFound.xyz fileFound2.xyzзалежно від конкретного випадку, пізніше, можливо, кращий вибір.

Детальніше про це я б спрямував вас на це питання


6

Команда, яку ви шукаєте, викликається xdg-open

Спробуйте свою команду з ним:

xdg-open "$(find . -name '*xyz' | head -n1)"

6

Вам потрібно знати, яку програму ви хочете використовувати для відкриття файлу. Якщо це зображення, ви можете використовувати gwenview або щось подібне.

Введення та перетворення аргументів здійснюється за допомогою xargs. І ти захочеш уникнути цієї підстановки ...

find . -name \*xyz | xargs gwenview

І обробляти пробіли у іменах ....

find . -name \*xyz | xargs -d"\n" gwenview

2

Як зазначали інші, ваше запитання не є достатньо конкретним, щоб чітко відповісти. Отже, здогадуючись про інше можливе значення: Якщо ви маєте на увазі, що хочете запустити його як виконуваний файл (мається на увазі, що ваша програма є виконуваним файлом), скажіть оболонці, що ви хочете замінити висновок команди find як частину командного рядка :

$(find . -name *.xyz)

0

Якщо ви хочете відкрити всі файли, знайдені на findокремих вкладках в одному екземплярі vim, ви можете зробити це:

find . -name \*xyz | xargs vim -p
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.