ディレクトリのファイル名の変更[重複]

ディレクトリのファイル名の変更[重複]

特定のディレクトリに複数のファイルがあります。これらはファイルです。

idex.1.ebwt  idex.2.ebwt  idex.3.ebwt  idex.4.ebwt  idex.rev.1.ebwt  idex.rev.2.ebwt

残りの名前を同じにidex保つためにファイル名を変更したいと思います。基本的にindexidexindex

一行のコマンドはありますか?

ベストアンサー1

単純な-loopといくつかのシェルマジックを使ってforこれを行うことができます。

for file in idex.*; do
    mv "$file" "index${file#idex}"
done

はい、1行で入れることもできます。 ;)

${var#pattern}$var行間を削除して評価しますpattern(ここではpatternモードglob(7))。 4つのバリエーションがあります(POSIX互換)。

  1. ${var#pattern}$var先行pattern(貪欲ではない)を排除するために評価します。
  2. ${var##pattern}$var先行(貪欲)を排除するために評価しますpattern
  3. ${var%pattern}結果は、$var末尾が除去されたpattern(欲張りなし)と評価されます。
  4. ${var%%pattern}結果は、$var末尾が除去された状態で評価されますpattern(貪欲)。

非貪欲と貪欲の違いは、 に設定すると評価されるが$var評価foo.bar.baz${var%.*}れるという点です。検索になるからです。foo.bar${var%%.*}foo${var%.*}最短パターンマッチ.*(だから最後 .最後)${var%%.*}どこで検索するか最長一つ(したがって最初 .終わり)。

どのバージョンが貪欲なバージョンであり、欲張りなバージョンかを覚えておくのに役立つように、次のことを覚えておいてください。もっと長く#各2回%)検索もっと長くマッチ。

おすすめ記事