我想从递归目录层次结构中的所有文件中删除尾随空格。我用这个:
find * -type f -exec sed 's/[ \t]*$//' -i {} \;
Run Code Online (Sandbox Code Playgroud)
这有效,但也会从找到的二进制文件中删除尾随的“空白”,这是不可取的。
如何find避免在二进制文件上运行此命令?
小智 4
您可以尝试使用 Unixfile命令来帮助识别您不需要的文件,但我认为如果您明确指定您想要命中的文件而不是那些您不想要的文件可能会更好。
find * -type f \( -name \*.java -o -name \*.c -o -name \*.sql \) -exec sed 's/[ \t]*$//' -i {} \;
Run Code Online (Sandbox Code Playgroud)
为了避免遍历源代码控制文件,您可能需要类似的东西
find * \! \( -name .svn -prune \) -type f \( -name \*.java -o -name \*.c -o -name \*.sql \) -exec sed 's/[ \t]*$//' -i {} \;
Run Code Online (Sandbox Code Playgroud)
您可能需要也可能不需要一些反斜杠,具体取决于您的 shell。