Эти ошибки поиска будут на stderr, поэтому, обходя цепочку полностью, вы захотите перенаправить ошибки с помощью 2>/dev/null
, хотя это помешает вам увидеть другие ошибки в команде поиска.
find /opt/site/ -name '.log.txt' 2>/dev/null | xargs cat | awk '{$NF=""; print $0}' | xargs sed "/Filesystem/d" | sed '1i Owner RepoName CreatedDate' | column -t
Как правило, с помощью сложной команды, подобной этой, вы должны разбивать ее, когда у вас есть ошибки, чтобы вы могли определить причину проблемы.
Давайте разберем эту команду, чтобы посмотреть, что она делает:
find /opt/site/ -name '.log.txt' 2>/dev/null
- найти все файлы в / opt / site / с именем .log.txt
xargs cat
- получить все их содержимое, один за другим
awk '{$NF=""; print $0}'
- удалить последний столбец
xargs sed "/Filesystem/d"
- рассматривать каждую запись как файл и удалять любые строки, содержащие файловую систему, из содержимого этих файлов.
sed '1i Owner RepoName CreatedDate'
- вставить владельцаRepoName CreatedDate в первой строке
column -t
- преобразовать данные в таблицу
Я бы предложил создать команду и проверить правильность вывода на каждом этапе.
Несколько вещейУдивительно, что ваша команда:
- Find ищет файлы, которые являются точно .log.txt, а не расширением.
- Второй вызов xargs - преобразование содержимого .logTXT-файлы в имена файлов.