Иногда я вижу следующую команду:
find . -name * -exec ls -a {} \;
Меня попросили выполнить это.
Что {} \;
значит здесь?
-name *
это хуже, чем избыточно. Поскольку *
кавычка не заключена в кавычки, оболочка расширяет ее до списка имен файлов в текущей папке, с пробелами, которые обрабатываются некорректно, что приводит к непредвиденным результатам или сообщению об ошибке. В качестве дополнительного пункта, find
имеет много функций, одна из которых заключается в перечислении файлов; это позволяет избежать необходимости использовать -exec
. Например, вы можете использовать find . -print
или find . -ls
. Наконец, есть два пути , чтобы избежать запятой: либо , как вы сделали с обратным косыми чертами, \;
или процитировать: ';'
. Используйте то, что вам удобнее.
-name *
избыточно