質問: 親フォルダ名から複数のファイルの名前を変更するシェルスクリプト 私はこのようなファイル構造を持っています: 00000010 000000001.file1 000000001.file2 00000020 00000003.file1 00000003.file2 00000003.file3 .。 したがって、8桁の数字で始まる名前のファイルが1つ以上含まれている8桁の名前のフォルダーがあります。しかし、これらのファイル名は、たとえば、同期していません。だから今私はアーカイブするためにbashでそれらの名前を再帰的に変更しようとしています: 00000010 000000010.file1 000000010.file2 00000020 00000020.file1 00000020.file2 00000020.file3 .。 私のスクリプトは次のようになります。#! /bin/bash find * -maxdepth 1 -name "*" -type d | while read -r dir do rename 's/$dir\/[0-9]{8}/$dir/' * done しかし、これは機能せず、次のようなエラーが発生します グローバルシンボル「$ dir」には、(eval 1)行1に明示的なパッケージ名が必要です。 フォルダ名に従ってファイルの名前を変更するにはどうすればよいですか?ご協力ありがとう御座います!
回答: 私が学んだ別の答えから、私は使用しなければならないことrename "s/$dir\/[0-9]{8}/$dir\/$dir/" $dir/* 誰かが同じ問題を抱えている場合に備えて...