2016-07-07 9 views
0

Я пытаюсь скомпоновать содержимое * .txt в другой файл с тем же именем в другом каталоге. Например. ../../*.txtКота одного файла в один и тот же файл в другом каталоге

Я пробовал:

find . -type f -name "*.txt" -exec cat {} \; >> ../../*.txt 

И некоторые вариации на него, но в конечном итоге с неоднозначной ошибки перенаправлять или вообще ничего.

Что мне здесь не хватает?

ответ

2

* не делает взаимно однозначное отображение. Он будет расширен bash для представления всех txt-файлов в каталоге ../../. Это вызывает ошибку, так как теперь вы пытаетесь перенаправить несколько файлов.

Возможно, было бы проще сделать это, используя цикл for, а не искать, поскольку вам нужно дважды ссылаться на имя файла.

for file in *.txt 
do 
    if [ -f ./$file ] ; then 
     cat ./$file >> ../../$file 
    fi 
done 
0

Для 1 файла:

cat ./file1.txt >> ../../file1.txt 

Ваш вопрос предполагает, 1 файл, но ваша команда find предлагает множество файлов типа *.txt

Чтобы сделать несколько файлов типа *.txt и основана на find командную попытке :

find . -name "*.txt" -print0 | while read -d $'\0' filename 
do 
    cat ./$filename >> ../../$filename 
done 
+0

отредактировал оригинальный вопрос. –

0

кот содержимое * .txt на другой файл с таким же именем

По существу вы копируете файлы здесь. Не так ли?

Итак, ниже материал должен работать на вас.

find . -type f -iname "*.txt" -exec cp bash -c 'cp "$1" ../../"$1"' _ {} \; 

 Смежные вопросы

  • Нет связанных вопросов^_^