我有一個用於更改mht文件的文件名的腳本,但它不遍歷dirs和子dirs。我問在本地論壇上的問題,我得到的回答是,這是一個解決方案:Bash腳本遞歸地更改文件名
find . -type f -name "*.mhtml" -o -type f -name "*.mht" | xargs -I item sh -c '{ echo item; echo item | sed "s/[:?|]//g"; }' | xargs -n2 mv
但它產生一個錯誤。通過我的一些實驗,事實證明sh -c
會將文件名與空格分開,並且會產生錯誤。我怎樣才能解決這個問題?
#!/bin/bash
# renames.sh
# basic file renamer
for i in . *.mht
do
j=`echo $i | sed 's/|/ /g' | sed 's/:/ /g' | sed 's/?//g' | sed 's/"//g'`
mv "$i" "$j"
done
如果你試過這個:'find。 -type f \(-name「* .mhtml」-o -name「* .mht」\)| xargs -I item sh -c'{echo \「item \」; echo \「item \」| sed「s/[:? |] // g」; }'| xargs -n2 mv' – lurker
它生成類似的錯誤 – user2420889