Знайдіть виконавчі назви файлів без шляху


9

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

find /opt/g09 -maxdepth 1 -executable

як я можу отримати висновок знаходження, щоб показати лише імена файлів, а не повний шлях?

Відповіді:


10

Або скористайтеся:

find /opt/g09 -maxdepth 1 -executable -printf "%f\n"

додавання -type fпрапора також працює тут.

З findпосібника:

 %f     File's name with any leading directories removed (only the last element).

Ця відповідь вимагає лише у вас GNU, findтоді як інші вимагають, щоб інші програми маніпулювали вашими результатами.


-тип Це те, про що я намагався думати! Дякую кодуючому чоловікові!
j0h

@ j0h не проблема!
nixpower

6

Використання basename:

find /opt/g09 -maxdepth 1 -executable -exec basename {} \;

Від man basename:

Print NAME with any leading directory components removed.

Також ви намагаєтесь findвсе, щоб обмежити свій пошук лише файлами, використовуйте:

find /opt/g09 -type f -maxdepth 1 -executable -exec basename {} \;

3

Найбільш очевидне рішення для мене

(cd /opt/g09; find -maxdepth 1 -executable)

Оскільки ви запускаєте передплату, ви залишаєтесь у тому самому каталозі. Перевагою цього методу є те, що вам не потрібен розбір. Недоліком є ​​те, що ви запускаєте передплату (хоч і не збираєтесь цього відчувати).


1
Це розумна ідея.
AB


1

Використання комбінації findтаperl

find /opt/g09 -maxdepth 1 -type f -executable | perl -pe 's/.+\/(.*)$/\1/'

Чудовий спосіб дізнатися деякі Perl: P
nixpower
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.