Я хочу рекурсивно просматривать каталоги, чтобы найти файлы, НЕ принадлежащие конкретному пользователю, и я не уверен, как это написать.
192
Утилита find (1) имеет основные цвета, которые можно инвертировать ("перевернуть") с помощью символа "!" оператор. Однако в подсказке необходимо избежать отрицания с помощью обратной косой черты, поскольку это метасимвол оболочки. Результат:
find . \! -user foo -print
!
кажется необязательнымxargs -I{} -P3 -- ${cmdhere} {}
передача вывода по конвейеру позволяет $ {cmdhere} работать с каждым файлом параллельно. cmdhere :: = стандартные утилиты unix; стандартные unix utils :: = chmod, chown, stat, ls, ...find . ...
или трубопровод кxargs
первому или второму пути?find . ! -user foo -exec chown <owner>:<group> {} \;
Другие ответили на вопрос «НЕ принадлежит конкретному пользователю» в теле. Вот тот, который отвечает на главный вопрос, но не был предоставлен:
Вы можете использовать это так:
$ sudo find /var/www -nouser -exec chown root:apache {} \;
И еще один родственный:
источник
-user
находит по пользователю или идентификатору пользователя и!
инвертирует предикат. Так,! -user ...
.источник
Вы можете использовать это:
источник
Используя z-shell (zsh), вы можете использовать
или
для поиска всех файлов, не принадлежащих вам рекурсивно.
источник
-a
флагом из-за подстановочного знака. Для того, чтобы поймать дот файлы используют ЗШdotglob
вариант:setopt dotglob
. В одной строке:(setopt dotglob; ls **/*(^U) )
. Скобки предназначены для запуска в подоболочке, чтобы вам не приходилось запускатьsetopt nodotglob
после завершения.