У меня есть некоторые каталоги и файлы, выглядит следующим образом:Как рекурсивно выполнить кошку с несколькими трубами
/my/directories/directory0/ | -->File1.txt | -->File2.txt /my/directories/directory1/ | -->File1.txt | -->File2.txt /my/directories/directory2/ | -->File1.txt | -->File2.txt /my/directories/directory3/ | -->File1.txt | -->File2.txt
Эти CSV-файлы, и я пытаюсь получить 3-ю колонку подсчитывается, и сортируются от наивысшего до самого низкого.
Прямо сейчас я могу выполнить это, но только в каждом конкретном каталоге. Например, если я бегу это:
cd /my/directories/directory0/ cat *.txt | awk -F "," '{print $3}' | sort | uniq -c | sort -nr > finalOutput.txt
Тогда я получаю именно то, что я хочу, но только с данными в этом каталоге. Я хочу котать все из всех/my/directories/sub-каталогов в один файл.
Я попытался использовать ls
или find
, чтобы выполнить это, но я не могу заставить его работать. Я знаю, что вы можете рекурсивно кошка таким образом, похоже на это:
find /my/directories/ -name '*.txt' -exec cat {} \; > finalOutput.txt
Но я не смог получить эту работу с мульти конвейеру команды. Любая помощь приветствуется.
Что случилось с 'найти/мои/каталоги/-name '* .txt' -exec кошки {} \; | awk ... '? –
В этом нет ничего плохого. Я просто не знал правильного синтаксиса после флага -exec. Это правильный ответ, потому что он показывает ошибку в моем синтаксисе. – trueCamelType