
Mac OS X(10.7.2)で多くのファイルの名前を変更したいです。rename
このコマンドのPerlパッケージはありません。
私のファイル名は「T452-102456-0.png」と同じで、「-0」部分を削除したいと思います。私は自分のphp-cliスクリプトを書くことでこれを行うことができることを知っていますが、より簡単で迅速な解決策を知りたいです。
答え1
BashまたはKshを組み合わせることでmv
この問題を解決できます。
for f in *.png; do mv -n "$f" "${f/-0}"; done
ファイル名の最初のダッシュの後に「0」があり、「-0」が常にドットの前にある場合は、式にもドットを含めることができます。
for f in *.png; do mv -n "$f" "${f/-0./.}"; done
しかし、名前変更ルールは簡単なので、次rename
のように始めるとユーティリティLinuxパッケージでは、次のようにすることもできます。
rename '-0.' '.' *.png
答え2
簡単な方法:現在のディレクトリのファイルのみ
zshを使う:
autoload zmv
zmv '(*)-0(.png)' '$1$2'
他のシェルの場合:
for x in *-0.png; do mv -- "$x" "${x%-0.*}.png"; done
改善方法:現在のディレクトリおよび/またはサブディレクトリのファイル
zshを使う:
zmv '(**/)(*)-0(.png)' '$1$2$3'
ksh93の使用:
set -o globstar
for x in **/*-0.png; do mv -- "$x" "${x%-0.*}.png"; done
bash ≥ 4の場合は上記と同じですが、shopt -s globstar
代わりにcommandを使用してくださいset
。
他のシェルの場合:
find -name '*-0.png' -exec sh -c 'for x; do mv -- "$x" "${x%-0.*}.png"; done' _ {} +
答え3
答え4
次のmmv
パッケージがある場合:
mmv '*-0.png' '#1.png'
(最新バージョン)と同様に、rename
既存のファイルを上書きしないように合理的な措置を講じます。