我的目的是想要将./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"
done
1 回答758 阅读✓ 已解决
1 回答683 阅读✓ 已解决
3 回答624 阅读✓ 已解决
1 回答1.4k 阅读
1 回答801 阅读✓ 已解决
2 回答543 阅读✓ 已解决
1 回答998 阅读
可以利用find命令先找出所有的txt文件,然后在批量改名(把src替换为target,把txt替换为md),然后进行复制。
如果src目录下只有txt文件,则直接src目录改名,然后txt文件改名更方便,或者说先txt文件改名(原路径),然后src文件目录改名。