我正在尝试创建一种方法,我可以运行一行代码来移动和重命名文件。
当前结构。
src/component/fb/*.js
目标和我想要移动到的格式:
public/api/*.txt
示例:test.js变成test.txt
写成四行:
for i in src/component/fb/*.js; do
i_basename=${i##*/}
mv -- "$i" "public/api/${i_basename%.js}.txt"
done
…或作为一个:
for i in src/component/fb/*.js; do i_basename=${i##*/}; mv -- "$i" "public/api/${i_basename%.js}.txt"; done
编辑如果你使用zsh
,你可以说:
for i in src/component/fb/*.js; do mv "$i" "public/api/$(basename $i:r.txt)"; done
@CharlesDuffy的答案更好。正如他在下面评论的那样,basename
是一个命令(而${i##*/}
是通过模式匹配的内置替换)。