Bash 批量更改和替换子文件夹中的文件扩展名
我想批量更改子文件夹中的文件。现有文件的扩展名为*.ada.npp。我想把它改成*.ada。问题是已经存在具有所需扩展名*.ada的文件。这些文件需要替换 我尝试了mmv和mv,但没有成功(见下文)Bash 批量更改和替换子文件夹中的文件扩展名,bash,shell,replace,file-extension,mv,Bash,Shell,Replace,File Extension,Mv,我想批量更改子文件夹中的文件。现有文件的扩展名为*.ada.npp。我想把它改成*.ada。问题是已经存在具有所需扩展名*.ada的文件。这些文件需要替换 我尝试了mmv和mv,但没有成功(见下文) 未完成任何操作。此循环将满足您的需要。从要开始搜索的顶级目录启动它 IFS=" ";for F in `find . -name "*.ada.npp"`;do B1=`echo "$F" | sed 's/.ada.npp$//'`;mv -- "$F" "$B1.ada";done 这个循环将
未完成任何操作。此循环将满足您的需要。从要开始搜索的顶级目录启动它
IFS="
";for F in `find . -name "*.ada.npp"`;do B1=`echo "$F" | sed 's/.ada.npp$//'`;mv -- "$F" "$B1.ada";done
这个循环将满足您的需要。从要开始搜索的顶级目录启动它
IFS="
";for F in `find . -name "*.ada.npp"`;do B1=`echo "$F" | sed 's/.ada.npp$//'`;mv -- "$F" "$B1.ada";done
使用查找
find . -name '*.ada.npp' -exec sh -c '
for f; do
mv -- "$f" "${f%.npp}"
done' _ {} +
使用查找
find . -name '*.ada.npp' -exec sh -c '
for f; do
mv -- "$f" "${f%.npp}"
done' _ {} +
要重命名文件吗?什么是“批量更改”?批量更改意味着以自动方式对大量文件进行更改可能您只需要-o
选项?看到了吗?要重命名文件吗?什么是“批量更改”?批量更改意味着以自动方式对大量文件进行更改可能您只需要-o
选项?看它会失败!不管怎样,如果你用名字换行命名文件,你应得的:它会失败!不管怎样,如果你用名字中的换行命名一个文件,你应该得到它:“-”是什么?“{}+”是做什么的?为了完成命令,它是否与“\;”相同?我不确定这是否是一个很好的解决方案(尽管它有效)。-exec
命令正在为每个找到的文件执行,为什么要在此之后使用循环?似乎有点奇怪。好吧,我收回它-清楚地表明,-exec命令
和-exec命令{}+
。“-”做什么?“{}+”是做什么的?为了完成命令,它是否与“\;”相同?我不确定这是否是一个很好的解决方案(尽管它有效)。-exec
命令正在为每个找到的文件执行,为什么要在此之后使用循环?似乎有点奇怪。好吧,我收回它-清楚地表明,-exec命令
和-exec命令{}+
。