ディレクトリには、次の名前のサブディレクトリが複数あります([1-9]は1から9までを意味します)。
AA_BB_CC_river[1-9]
各サブディレクトリには、ディレクトリと同じ名前のファイル(ascii)が含まれています。複数のサブディレクトリ(およびそれに付随するファイル)の名前を指定するのに間違いを犯しました。
AA_BB_CC_rier[1-9]
サブディレクトリと添付ファイルの命名を置き換える方法はrier
?river
答え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
呼び出しはディレクトリ自体の名前を変更します。