найдите команду: как проигнорировать путь?

Ваши пользовательские потребности write/executable (wx) полномочия на каталоге для создания создают/удаляют любые файлы в нем (даже если Вы не владеете ими и не имеете полномочий чтения). Нет никакой потребности во владении им.

Таким образом для перемещения каталога Вы должны иметь wx предварительные миссии на родительском каталоге, чтобы смочь работать с файлами и директорами в нем и wx на каталоге Вы собираетесь переместиться, и на всем вложенном каталоге (полномочия на файлах в нем не имеют значения вообще, если Вы не собираетесь изменять их).

2
20.05.2013, 19:15
4 ответа

GNU находит поддержки -printf предикат, который поддерживает %f спецификатор формата для вывода на имени файла.

find -type f -name "*.c" -printf '%f\n'
5
27.01.2020, 21:49
  • 1
    , которому отвечают настолько быстро. испытанный. еще раз спасибо! :D –  Adorjan 20.05.2013, 17:58

Используя awk не является так сложным:

find . -name '*.c' -type f | awk -F/ '{print $NF}'

Или sed:

find . -name '*.c' -type f | sed 's|.*/||'

(принимающий имена файлов не содержат символы новой строки), и это будет работать с любым find реализация.

4
27.01.2020, 21:49
  • 1
    Принятие имен файлов и имен каталогов пути не содержит символы новой строки. –  Hauke Laging 20.05.2013, 18:40

Можно использовать basename программа для получения имени файла:

find . -type f -name \*.c -exec basename {} +

Это продолжает работать finds, которые не имеют GNU -printf расширение.

2
27.01.2020, 21:49

GNU находит, знает -printf. При поиске подкаталогов также затем, имена файлов могут произойти многократно (в целом)!

Вам нужно -printf "%p\n" или -printf "%f\n".

1
27.01.2020, 21:49

Теги

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