【问题标题】:Terminal apply a command to all sub directories终端将命令应用于所有子目录
【发布时间】:2017-04-29 00:12:21
【问题描述】:

我已经为此工作了几天,但无法弄清楚。做了很多研究,但到目前为止没有任何效果,所以我想我会问。所以这就是我所在的位置:我在终端中运行 bash 3.2.57(1)-release 并且能够让下面的代码工作。它所做的只是一旦我“cd”到我正在处理的文件服务器上的文件夹中,它就会用“_”替换任何多余的语法。原因是我正在将文件服务器从 mac 迁移到不喜欢“/”的 Microsoft Sharepoint。

for i in *; do mv "$i" "${i//[\/<>:\\|*\'\"?]/_}"; done

现在我正在尝试使代码在所有子目录中运行。文件服务器非常笨重,大量子文件夹的名称中有空格,我无法绕过。 任何帮助都会很棒!提前致谢。

【问题讨论】:

  • mv 合成器做得很好。

标签: bash terminal file-rename spaces subdirectory


【解决方案1】:

使用 find 代替 for:

find . -type f | while read i ; do echo "$i" ; done

如果它的输出是您希望操作的文件列表(如果不是,则修改查找选项)然后将 echo 替换为您的 mv 命令。

【讨论】:

    猜你喜欢
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2010-09-25
    相关资源
    最近更新 更多