gpt4 book ai didi

bash - 使用 Bash 替换 DIRECTORY/SUBDIRECTORY 名称中的 DOTS 或字符

转载 作者:行者123 更新时间:2023-12-04 18:30:16 27 4
gpt4 key购买 nike

我一直在寻找正确的解决方案。我找到了一些相近的例子。 Bash script to replace spaces in file names
但我正在寻找的是如何替换多个 .当前目录/子目录名称中的点,然后替换多个 . FILENAMES 中的点,不包括“递归”的 *.extention。

这个例子很接近但不正确:

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-file-file.ext

最佳答案

您可以像这样分配给变量和管道:

x="dir.dir.dir/dir.dir.dir/file.file.file.ext"
echo "$(echo "Result: ${x%.*}" | sed 's/\./_/g').${x##*.}"
Result: dir_dir_dir/dir_dir_dir/file_file_file.ext

关于bash - 使用 Bash 替换 DIRECTORY/SUBDIRECTORY 名称中的 DOTS 或字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33925147/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com