次に終わるファイルのリストがあります。~
私はそれらを見つける
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
答え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')" 完璧