Mik*_*maa 59 shell whitespace find in-place removing-whitespace
是否有任何工具/ UNIX单线程可以就地删除多个文件的尾部空格.
例如,可以与find结合使用.
Tim*_*ote 129
你要
sed --in-place 's/[[:space:]]\+$//' file
Run Code Online (Sandbox Code Playgroud)
这将删除所有 POSIX标准定义的空白字符,包括垂直制表符和换页符.此外,如果尾随空格实际存在,它只会进行替换,而不像使用零或多个匹配器(*)的其他答案.
--in-place只是长形式-i.我更喜欢在脚本中使用长格式,因为它更倾向于说明标志实际上做了什么.
它可以find像这样轻松集成:
find . -type f -name '*.txt' -exec sed --in-place 's/[[:space:]]\+$//' {} \+
Run Code Online (Sandbox Code Playgroud)
正如评论中指出的那样,如果您没有安装gnu工具,则上述操作无效.如果是这种情况,您可以使用以下内容:
find . -iname '*.txt' -type f -exec sed -i '' 's/[[:space:]]\{1,\}$//' {} \+
Run Code Online (Sandbox Code Playgroud)
jll*_*gre 13
与其他所有需要GNU sed的解决方案不同,这个解决方案适用于任何实现POSIX标准命令的Unix系统.
find . -type f -name "*.txt" -exec sh -c 'for i;do sed 's/[[:space:]]*$//' "$i">/tmp/.$$ && mv /tmp/.$$ "$i";done' arg0 {} +
Run Code Online (Sandbox Code Playgroud)
编辑:此略微修改的版本保留文件权限:
find . -type f -name "*.txt" -exec sh -c 'for i;do sed 's/[[:space:]]*$//' "$i">/tmp/.$$ && cat /tmp/.$$ > "$i";done' arg0 {} +
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30005 次 |
| 最近记录: |