私は "CODE(GRADE)"と呼ばれる一連のディレクトリを持っており、それらをすべて "CODE"に名前変更して、それぞれが "GRADE.grade"と呼ばれる新しい空ファイルを作成したいとします。ディレクトリを見つけて部分的なディレクトリ名をタッチしますか?
これを行う最も簡単な方法は何ですか?
私の現在の考え方:
find -iname "*(*)" --exec touch {}/MAGIC!.grade \;
rename 's/ \(.*$//' *(*)
私は "CODE(GRADE)"と呼ばれる一連のディレクトリを持っており、それらをすべて "CODE"に名前変更して、それぞれが "GRADE.grade"と呼ばれる新しい空ファイルを作成したいとします。ディレクトリを見つけて部分的なディレクトリ名をタッチしますか?
これを行う最も簡単な方法は何ですか?
私の現在の考え方:
find -iname "*(*)" --exec touch {}/MAGIC!.grade \;
rename 's/ \(.*$//' *(*)
パス内の空間のみがターゲットディレクトリの名前である場合、あなたはこのような何かを離れて得ることができます。
find -type d -name '* (*)' -print |
while read path grade; do
mv "$path $grade" "$path"
grad=${grade%\)}
touch "$path/${grad#\(}".grade
done
これは、単一のファイル名に簡単です:
grade=${file#*(}; grade=${grade%)}
code=${file% (*)}
mv -- "$file" "$code"
>> "$code/$grade.grade"
したがって、各ファイルにそれを実行します。
find . -type d -name '* (*)' -exec sh -c '
for file
do
code from above goes here
done
' -- {} +
(単に節約、>> file
代わりのtouch file
の私の使用を気にしないでください。いくつかのCPUサイクル。)