Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Macos Bash:删除文件名和文件夹名中的正斜杠_Macos_Bash_Rename_File Rename - Fatal编程技术网

Macos Bash:删除文件名和文件夹名中的正斜杠

Macos Bash:删除文件名和文件夹名中的正斜杠,macos,bash,rename,file-rename,Macos,Bash,Rename,File Rename,我需要删除从给定文件夹开始的所有文件名和文件夹名中的正斜杠,包括其所有子文件夹 为了在Mac上与automator一起使用,我找到了下面的bash脚本。当尝试替换任何类型的字符(例如使用[A]替换文件名中的A)时,它都可以工作,但不能使用正斜杠 #!/bin/bash find "/startdir/" -depth -name "*[\/]*" | while read FILEDIR do DIR="${FILEDIR%/*}" FILE="${FILEDI

我需要删除从给定文件夹开始的所有文件名和文件夹名中的正斜杠,包括其所有子文件夹

为了在Mac上与automator一起使用,我找到了下面的bash脚本。当尝试替换任何类型的字符(例如使用[A]替换文件名中的A)时,它都可以工作,但不能使用正斜杠

#!/bin/bash
find "/startdir/" -depth -name "*[\/]*" |     
while read FILEDIR 
do
    DIR="${FILEDIR%/*}"   
    FILE="${FILEDIR/*\/}"        
    NEWFILE="${FILE//[\/]/_}"
    mv "$DIR/$FILE" "$DIR/$NEWFILE"
done

欢迎任何帮助

在这里找到了答案:

bash脚本中的正斜杠应替换为分号,以匹配OSX文件名中的正斜杠字符。
通过此更改,上述脚本可以正常工作。

在这里找到了答案:

bash脚本中的正斜杠应替换为分号,以匹配OSX文件名中的正斜杠字符。
通过此更改,上述脚本可以工作。

为什么文件名应该包含正斜杠?无论如何,我已经在我的bash测试环境中执行了您的脚本,并且得到了以下消息:find:warning:Unix文件名通常不包含斜杠(尽管路径名包含斜杠)。这意味着“-name”[\\/]”在该系统上可能会一直计算为false。您可能会发现'-wholename'测试更有用,或者'-same file'更有用。或者,如果您正在使用GNU grep,您可以使用“查找…”-print0 | grep-FzZ'[\\/]'.@123 Mac OS!=linux@Groelk在
mv
前面放一个
echo
,看看它实际上在做什么(如果它甚至进入了循环)。执行
bash-x
也可能有用。@BroSlow是的,我不好。谢谢你的建议。这意味着在Mac上处理整个硬盘的内容。我正在寻找一个脚本-任何脚本-可以递归处理所有文件夹、子文件夹和文件的名称以删除斜杠。不幸的是,OSX在文件名和文件夹名中支持正斜杠字符。为什么文件名应该包含正斜杠?无论如何,我已经在我的bash测试环境中执行了您的脚本,并且得到了以下消息:find:warning:Unix文件名通常不包含斜杠(尽管路径名包含斜杠)。这意味着“-name”[\\/]”在该系统上可能会一直计算为false。您可能会发现'-wholename'测试更有用,或者'-same file'更有用。或者,如果您正在使用GNU grep,您可以使用“查找…”-print0 | grep-FzZ'[\\/]'.@123 Mac OS!=linux@Groelk在
mv
前面放一个
echo
,看看它实际上在做什么(如果它甚至进入了循环)。执行
bash-x
也可能有用。@BroSlow是的,我不好。谢谢你的建议。这意味着在Mac上处理整个硬盘的内容。我正在寻找一个脚本-任何脚本-可以递归处理所有文件夹、子文件夹和文件的名称以删除斜杠。不幸的是,OSX在文件名和文件夹名中支持正斜杠字符。