我一直在寻找合适的解决方案。我找到了一些接近的例子。Bash script to replace spaces in file names
但我正在寻找的是如何替换当前DIRECTORY / SUBDIRECTORY名称中的多个.
点,然后替换FILENAMES中的多个.
点,不包括* .extention"递归&#34 ;
这个例子很接近但不对:
find . -maxdepth 2 -name "*.*" -execdir rename 's/./-/g' "{}" \;
另一个例子但不正确:
for f in *; do mv "$f" "${f//./-}"; done
所以
dir.dir.dir / dir.dir.dir / file.file.file.ext
会变成
DIR-DIR-DIR / DIR-DIR-DIR /文件文件file.ext
答案 0 :(得分:1)
.
(例如用于rename
的表达式,因为默认情况下它具有“任何单个字符”的特殊含义。所以替换语句至少应该是s/\./-/g
。{}
命令中 引用find
。find
命令,因为你想要替换目录名中的所有点,但保留文件名中的最后一个点。* *
)的文件名。这是故意的吗?答案 1 :(得分:1)
您可以像这样分配给变量和管道:
char letter[2] = { char( rand() % range + min ), '\0' };