我的目的是想要将./src/**/*.txt批量重命名并移动到./target/**/*.md,命令应该怎么写?
Zsh 的話兩條命令(注意路徑末尾的 /):
rsync -am --include='*/' --include='*.txt' --exclude='*' ./src/ ./target/
zmv -W './target/**/*.txt' './target/**/*.md'Bash 的話得寫腳本:
for f1 in $(find ./src -name '*.txt')
do
f2=${f1#./src/} # 去掉前綴
f2=${f2%.txt} # 去掉後綴
mkdir -p ${f1%/*} # 創建文件夾
mv "${f1}" "./target/${f2}.md"
done如果 ./src/ 只有 txt 文件而沒有其他文件,則更爲方便。Zsh:
mv ./src ./target
zmv -W './target/**/*.txt' './target/**/*.md'Bash:
mv ./src ./target
cd ./target
for f in $(find . -name '*.txt')
do mv "${f}" "${f%.txt}.md"
done2 回答713 阅读✓ 已解决
3 回答784 阅读
1 回答770 阅读
2 回答722 阅读
1 回答668 阅读
1 回答612 阅读
1 回答554 阅读
可以利用find命令先找出所有的txt文件,然后在批量改名(把src替换为target,把txt替换为md),然后进行复制。
如果src目录下只有txt文件,则直接src目录改名,然后txt文件改名更方便,或者说先txt文件改名(原路径),然后src文件目录改名。