Предположим, в каталоге есть несколько файлов, например:
file1.txt
file2.txt
file3.txt
file4
file5
fab
text1
Мне нужно удалить файлы с .txt
и добавить содержимое оставшихся файлов с именем, начинающимся с файл ( файл4
, файл5
) в один файл.
Я попробовал следующую команду, но она добавляет все 5 файлов в один файл.
ls -ltr file*|grep -vE ".txt" | cat * > final
Попробуйте это
#!/bin/bash
find . -name '*.txt' -exec rm {} +
for f in file*
do
cat $f >> final_file
done
В одну строку, не удаляя файлы .txt
, но игнорируя их для cat
$ find . -name 'file*' ! -name '*.txt' -exec cat {} \; > final
Если у вас есть bash
, вы можете использовать следующее:
shopt -s extglob
cat !(*.txt) > final
Или используя zsh
:
setopt extended_glob
cat ^*.txt > final