На этот вопрос уже есть ответ здесь:
-exec ls -s
это часть моей программы, просто хочу знать, что означает -s {}
. Это вся моя программа, я знаю, что она делает:
find $root -type f -exec ls -s {} \; | sort -n | tail -n 15 >> ~/prog.log
-exec
опция для find
, который выполняет команду с помощью имен файлов, которые это нашло. Синтаксис -exec
:
-exec command {} [;|+]
Эти {}
заменяется под названием файлы (один файл на выполнение команды, если ;
используется, несколько файлов, если +
используется).
ls -s
печать размер файла наряду с именем файла.
Это может быть сделано полностью в find
, с помощью -printf
опция:
find "$root" -type f -printf "%s %p\n" | ...
Эта команда find
s файлы в каталоге $root
, тогда exec
юты команда на каждом из них. Команда ls -s filename
, и {} заполнитель в команде, которая заменяется каждым из названий файлов, найденных в $root.