Я хотел бы получить список журналов сбоев в текущем каталоге для использования во внешнем скрипте, журналы определяются шаблоном FAIL в имени файла, поэтому я использовал FAIL* для передачи файлов скрипта для открытия и обработки. Однако для каждого файла FAIL есть два типа: сжатый файл и несжатый. Я просто хочу открыть несжатый файл.
Можно ли выполнить цепочку find FAIL*, но не если существует *.gz/bz2/whatever?
решение1
Вы можете проверить наличие регулярного выражения для этих расширений:
for file in *FAIL*; do [[ ! $file =~ .(bz2|gz) ]] && printf "%s\n" "$file"; done
Вставьте обязательное предупреждение оне разбираетсяls
...
решение2
Если вы используете find
команду, вы можете пропустить файлы, которые заканчиваются расширением, .gz
например:
$ ls -l
total 0
-rw-rw-r--. 1 saml saml 0 Oct 15 22:42 FAIL
-rw-rw-r--. 1 saml saml 0 Oct 15 22:42 FAIL.gz
$ find . -name "*FAIL*" ! -name "*.gz"
./FAIL
Вы также можете фильтровать ls
вывод следующим образом:
$ ls *FAIL* | grep -v '.gz'
FAIL
Однако обычно рекомендуется не анализировать ls
вывод, поскольку он не структурирован настолько, чтобы это было удобно.