2016-07-07 61 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"' _ {} \; 
相關問題