私のホームディレクトリには次の2つのファイルがあります -
hello_newest.txt
goodbye_newest.txt
ファイル名の「最新」部分を完全に削除して、再度表示できるように名前を変更したいhello.txt
。goodbye.txt
これは私が実行しているコマンドです -
find -name "*.txt" -exec rename 's/newest//i' {} ";"
このコマンドを実行してもエラーは発生せず、ファイルに対して何も行われません。http://www.computerhope.com/unix/rename.htmそして、そこにあるいくつかの例に基づくと、それは機能するはずだと思われます。
きっと単純なことだと思いますが、何が足りないのでしょうか?
答え1
どうやら、私たちが使っていたRedhatのバージョンのようです。コマンドは -
rename _newest '' *
同じ目標を達成しているようです。
助けてくれてありがとう。
答え2
異なる構文。しかし私の場合はうまくいきました:
for i in *.txt; do mv "$i" "`echo $i | sed 's/_[^.]*//'`"; done
for ループを使用してすべての txt ファイルが検出され、次に sed を使用してアンダースコアの後の文字が削除されます。