Ваши пользовательские потребности write/executable (wx)
полномочия на каталоге для создания создают/удаляют любые файлы в нем (даже если Вы не владеете ими и не имеете полномочий чтения). Нет никакой потребности во владении им.
Таким образом для перемещения каталога Вы должны иметь wx
предварительные миссии на родительском каталоге, чтобы смочь работать с файлами и директорами в нем и wx
на каталоге Вы собираетесь переместиться, и на всем вложенном каталоге (полномочия на файлах в нем не имеют значения вообще, если Вы не собираетесь изменять их).
GNU находит поддержки -printf
предикат, который поддерживает %f
спецификатор формата для вывода на имени файла.
find -type f -name "*.c" -printf '%f\n'
Используя awk
не является так сложным:
find . -name '*.c' -type f | awk -F/ '{print $NF}'
Или sed
:
find . -name '*.c' -type f | sed 's|.*/||'
(принимающий имена файлов не содержат символы новой строки), и это будет работать с любым find
реализация.
Можно использовать basename
программа для получения имени файла:
find . -type f -name \*.c -exec basename {} +
Это продолжает работать find
s, которые не имеют GNU -printf
расширение.
GNU находит, знает -printf
. При поиске подкаталогов также затем, имена файлов могут произойти многократно (в целом)!
Вам нужно -printf "%p\n"
или -printf "%f\n"
.