ディレクトリと埋め込みファイルの名前変更

ディレクトリと埋め込みファイルの名前変更

ディレクトリには、次の名前のサブディレクトリが複数あります([1-9]は1から9までを意味します)。

AA_BB_CC_river[1-9]

各サブディレクトリには、ディレクトリと同じ名前のファイル(ascii)が含まれています。複数のサブディレクトリ(およびそれに付随するファイル)の名前を指定するのに間違いを犯しました。

AA_BB_CC_rier[1-9]

サブディレクトリと添付ファイルの命名を置き換える方法はrierriver

答え1

find外部プログラムを許可している場合は、次のものを使用できますrename

find . -type f -name '*_rier*' -exec rename 's/rier/river/g' {} \+
find . -type d -name '*_rier*' -exec rename 's/rier/river/g' {} \+

外部ツールを使用したくない場合は、次のものを使用できます。

# rename directories
for f in *rier*; do
  mv -- "$f" "${f/rier/river}"
done

# rename files
for f in */*rier*; do
  mv -- "$f" "${f/rier/river}"
done

まずディレクトリ名を変更し、ファイル名を変更します。

答え2

for file in $(find . -depth -name '*rier*'); do 
  mv $file $(echo $file | sed -e 's/rier/river/');
done

答え3

forループを使用してください。

for d in AA_BB_CC_rier*; do
  [ -d "$d" ] && \
    mv -v -- "$d/$d" "$d/${d/rier/river}" && \
    mv -v -- "$d" "${d/rier/river}"
done

  • forで始まるすべての項目を繰り返しますAA_BB_CC_rier
  • [ -d "$d" ]ディレクトリであることを確認してください。
  • mvディレクトリのファイル名を変更します。
  • 2番目のmv呼び出しはディレクトリ自体の名前を変更します。

関連情報