终端将命令应用于所有子目录

时间:2016-12-13 19:55:32

标签: bash terminal file-rename spaces subdirectory

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

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

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

1 个答案:

答案 0 :(得分:1)

使用find而不是for:

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

如果输出是您希望操作的文件列表(如果没有则修改查找选项),然后用mv命令替换回声。