我試圖將* .txt的內容拖到另一個目錄中具有相同名稱的另一個文件上。例如。 ../../*.txt
將一個文件拖到另一個目錄中的同名文件上
我曾嘗試:
find . -type f -name "*.txt" -exec cat {} \; >> ../../*.txt
而且它的一些變化,但有一個不明確的重定向錯誤,或者什麼都沒有結束。
我在這裏錯過了什麼?
我試圖將* .txt的內容拖到另一個目錄中具有相同名稱的另一個文件上。例如。 ../../*.txt
將一個文件拖到另一個目錄中的同名文件上
我曾嘗試:
find . -type f -name "*.txt" -exec cat {} \; >> ../../*.txt
而且它的一些變化,但有一個不明確的重定向錯誤,或者什麼都沒有結束。
我在這裏錯過了什麼?
*
沒有做一對一映射。它將通過bash進行擴展以表示../../
目錄中的所有txt文件。這是由於您現在嘗試重定向到多個文件而導致的錯誤。
使用for循環而不是查找可能會更容易,因爲您需要引用文件名兩次。
for file in *.txt
do
if [ -f ./$file ] ; then
cat ./$file >> ../../$file
fi
done
對於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
貓*內容.TXT到具有相同的名稱這裏
基本上你將文件複製其他文件。是嗎?
所以下面的東西應該爲你工作。
find . -type f -iname "*.txt" -exec cp bash -c 'cp "$1" ../../"$1"' _ {} \;
編輯原始問題。 –