Вы можете игнорировать некоторые файлы с помощью ls
, используя опцию --ignore
, а затем поместить их в файл.
ls --ignore="*_BASE_*" | xargs cat > all.txt
Также вы можете сделать это без xargs
:
cat $( ls --ignore="*_BASE_*" ) > all.txt
UPD :
Дейл Хагглунд заметил, что имя файла, например «Some File», будет отображаться как два имени файла «Some» и «File». Чтобы избежать этого, вы можете использовать опцию --quoting-style=WORD
, когда WORD
может быть shell
или escape
.
Например, если --quoting-style=shell
Some File будет напечатан как «Some File» и будет интерпретирован как один файл.
Другая проблема заключается в том, что выходной файл может совпадать с одним из ls
ed файлов. Мы тоже должны это игнорировать.
Итак, ответ:
outputFile=a.txt; ls --ignore="*sh*" --ignore="${outputFile}" --quoting-style=shell | xargs cat > ${outputFile}