从文件中删除尾随〜

从文件中删除尾随〜

我有一个以以下结尾的文件列表~

我找到他们

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')"
完毕

相关内容