有人能帮我找出如何从目录名中删除双空格吗?
我使用的是一个服务,它为我提供了一个文件的目录结构,其中的文件名包含空格。有时目录名包含双空格,而我的一些本地脚本无法处理它。
我想要一个shell命令组合,它将重命名删除双空格的目录。有点像sed 's/ / /g'。
幸运的是,没有任何子目录的父母也需要重新命名。
我能找到这样的候选人
sh> find ~/Downloads/Scala_Intro -name '* *' -print
/Users/jimka/Downloads/Scala_Intro/SCALAIN_E-Running Average-362/Edward Cacioppo_2973_assignsubmission_file_
/Users/jimka/Downloads/Scala_Intro/SCALAIN_E-Implement histogram-3169/Edward Cacioppo_3102_assignsubmission_file_但是,当我尝试使用xargs来操作这个行序列时,xargs替换似乎删除了双空间。因此,我无法生成命令行mv old-name new-name
sh> find ~/Downloads/Scala_Intro -name '* *' -print | xargs -I % echo %
/Users/jimka/Downloads/Scala_Intro/SCALAIN_E-Running Average-362/Edward Cacioppo_2973_assignsubmission_file_
/Users/jimka/Downloads/Scala_Intro/SCALAIN_E-Implement histogram-3169/Edward Cacioppo_3102_assignsubmission_file_我试过以下几种方法,但不起作用。
sh> find ~/Downloads/Scala_Intro -name '* *' -print | xargs -p -I % mv "%" `echo "%" | sed 's/ / /g'`
mv /Users/jimka/Downloads/Scala_Intro/SCALAIN_E-Running Average-362/Edward Cacioppo_2973_assignsubmission_file_ /Users/jimka/Downloads/Scala_Intro/SCALAIN_E-Running Average-362/Edward Cacioppo_2973_assignsubmission_file_?...注意,当xargs询问是否执行mv命令时,加倍的空间已经转换为单个空间。
发布于 2020-06-04 09:13:40
与xargs和mv相比,我更喜欢rename工具:
根据您拥有的重命名工具:
find ~/Downloads/Scala_Intro -name '* *' -exec rename -n ' ' ' ' {} +或
find ~/Downloads/Scala_Intro -name '* *' -exec rename -n 's/ / /' {} +(删除-n选项(试运行),以便在满意输出的情况下实际执行重命名)
或者,如果您想继续使用mv (不需要xargs,find -exec就可以):
find ~/Downloads/Scala_Intro -name '* *' -exec sh -c 'mv "$1" "${1// / }"' find-sh {} \;https://unix.stackexchange.com/questions/590805
复制相似问题