Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 换成。对于目录中的所有文件_Bash_Rename - Fatal编程技术网

Bash 换成。对于目录中的所有文件

Bash 换成。对于目录中的所有文件,bash,rename,Bash,Rename,我需要重命名目录中的所有文件。源文件名的一些示例如下: alpha--sometext.381928 comp--moretext.7294058 结果文件将重命名为: alpha.sometext.381928 comp.moretext.7294058 --前后的字符数不一致 该脚本需要在当前安装的Ubuntu和FreeBSD上运行。这些是lean LAMP服务器,因此仅安装了必要的软件包 通过bash感谢您: for file in *--*; do mv "${file}"

我需要重命名目录中的所有文件。源文件名的一些示例如下:

alpha--sometext.381928
comp--moretext.7294058
结果文件将重命名为:

alpha.sometext.381928
comp.moretext.7294058
--前后的字符数不一致

该脚本需要在当前安装的Ubuntu和FreeBSD上运行。这些是lean LAMP服务器,因此仅安装了必要的软件包

通过bash感谢您:

for file in *--*; do
    mv "${file}" "${file/--/.}"
done

神奇之处在于
${file/-/.}
这是
${file}
的值,除了每个“-”都改为“.”

作为纯shell的替代,您可以使用Perl附带的标准实用程序
重命名
。对于简单的情况更方便

rename 's/--/./' *

不错。我本来想写一篇,但你抢先了!您应该始终引用任何包含文件名的变量
mv“${file}”“${file/-/.}”
@denniswillamson-我已经更新了我的答案,但准确地说,你需要引用任何可能有空格的内容。