Изменить дату только для одного пользователя без полномочий root в Linux [дубликат]

Хм. @don_crissti уже давал ответ для grep в комментарии. Но поскольку вы сказали, что на самом деле речь не идет о grep или ls , я собираюсь переписать указанную команду, чтобы не использовать эти команды.

Я думаю, вам нужно следующее:

do-something-with $(produce-list-of-files)

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

Если имена файлов "хорошие", мы могли бы сделать только

produce-list-of-files | xargs do-something-with

Если имена файлов могут содержать пробелы, но разделены символами новой строки, мы должны указать xargs , чтобы они не разбивались на любые пробелы, но только символы новой строки:

produce-list-of-files | xargs -d '\n' do-something-with

Если имена файлов могут также содержать символы новой строки, список должен быть разделен NUL ('\ 0', байт с нулевым значением), и нам понадобится xargs , который его поддерживает. По крайней мере, некоторые версии различных утилит поддерживают файлы листинга, разделенные символами NUL вместо символов новой строки, есть как минимум find -print0 , sort -z и grep -Z в версии этих инструментов GNU. В xargs флаг - null или -0 . Итак:

produce-list-of-files -0 | xargs -0 do-something-with

Пример запуска с cat и, ну, ls -l :

$ touch "abba acdc" "foo bar" $'new\nline'
$ echo -en "abba acdc\0foo bar\0new\nline\0" > list
$ cat list | xargs -0 ls -l
-rw-r--r-- 1 itvirta itvirta 0 Aug  2 01:23 abba acdc
-rw-r--r-- 1 itvirta itvirta 0 Aug  2 01:23 foo bar
-rw-r--r-- 1 itvirta itvirta 0 Aug  2 01:23 new?line

1
21.03.2014, 12:59
0 ответов

Теги

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