我有一个以以下结尾的文件列表~
我找到他们
find /var/www/vhosts/domain.com/httpdocs/ -type f -name "*.*~"
我怎样才能消除它~
答案1
find /var/www/vhosts/domain.com/httpdocs/ -type f -name '*.*~' \
-exec sh -c 'for arg do mv -- "$arg" "${arg%\~}"; done' _ {} +
_
将第一个集合传递$0
给_
,否则它将采用您的第一个文件名。- 使用
+
代替;
告诉find
将尽可能多的文件名传递给单个命令,而不是为每个文件执行一个新的 shell。
答案2
您可以使用rename
:
find /var/www/vhosts/domain.com/httpdocs/ -type f -name "*.*~" -exec rename 's/~$//' {} \;
答案3
我的解决方案是一个简单的 bash 脚本:
#!/bin/bash 对于“$(find /var/www/vhosts/domain.com/httpdocs/ -type f -name '*.*~')”中的文件 做 mv "$file" "$(echo $file | sed -e 's/~//g')" 完毕