Se você tiver bash
disponível, poderá usar o seguinte:
shopt -s extglob
cat !(*.txt) > final
Ou usando zsh
:
setopt extended_glob
cat ^*.txt > final
Suponha que em um diretório existam alguns arquivos como:
file1.txt
file2.txt
file3.txt
file4
file5
fab
text1
Eu preciso eliminar os arquivos com a extensão .txt
e anexar o conteúdo dos arquivos restantes com um nome de arquivo iniciado com arquivo ( file4
, file5
) em um único arquivo .
Eu tentei o comando abaixo, mas ele anexou todos os 5 arquivos em um único arquivo.
ls -ltr file*|grep -vE ".txt" | cat * > final
Se você tiver bash
disponível, poderá usar o seguinte:
shopt -s extglob
cat !(*.txt) > final
Ou usando zsh
:
setopt extended_glob
cat ^*.txt > final
encontre. ! -name '* .txt' | xargs cat > > final
Tente isso
#!/bin/bash
find . -name '*.txt' -exec rm {} +
for f in file*
do
cat $f >> final_file
done
Em uma linha sem remover .txt
arquivos, mas ignorando-os para o cat
$ find . -name 'file*' ! -name '*.txt' -exec cat {} \; > final
Tags shell