ファイル名の一部をディレクトリ名に置き換えます。

ファイル名の一部をディレクトリ名に置き換えます。

他にも多くのファイルを含むフォルダがあり、ACB*そのいくつかは次のとおりです。scanAC_*

scanAC呼び出された部分を削除し、その部分があるディレクトリ名に変更したいと思います。

たとえば、ディレクトリにACB_200315ファイルが含まれていますscanAC_typefile_2S.dcmが、最後のファイルを次のように作成したいとします。ACB_200315_typefile_2S.dcm

今試してみましたが(Linux、SSH、名前変更オプションは利用できません)、うまくいきません。

for i in ACB*; do
cd ${i}
  mv scanID* ${i/scanID/${PWD##*/}};
cd ..
done

答え1

最初は機能しなかったCostasが提供したスクリプトを調整して動作させるには、次のスクリプトを使用します。

for d in ACB*; do
  cd ${d}
    for f in scanID*; do
    mv "${f}" "${d}${f#scanID}" 
    done
  cd ..
done

答え2

「いくつかのファイル」では、スクリプトを少し変更する必要があります。

for d in ACB* ; do
    for f in ${d}/scanID* ; do
        mv "${f}" "${f/scanID/${d}}"
       #mv "${f}" "${d}/${d}${f#*scanID}"
    done
done

または使用探す代わりに

find ACB* -name 'scanID*' -exec bash -c 'mv "$0" ""${0/scanID/${0%\/*}}"' {} \;

関連情報