0
我有一組名爲「CODE(GRADE)」的目錄,並希望將它們全部重命名爲「CODE」,在每個名爲「GRADE.grade」中創建一個新的空文件。查找目錄,然後觸摸部分目錄名稱?
bash中最簡單的方法是什麼?
我目前的想法:
find -iname "*(*)" --exec touch {}/MAGIC!.grade \;
rename 's/ \(.*$//' *(*)
我有一組名爲「CODE(GRADE)」的目錄,並希望將它們全部重命名爲「CODE」,在每個名爲「GRADE.grade」中創建一個新的空文件。查找目錄,然後觸摸部分目錄名稱?
bash中最簡單的方法是什麼?
我目前的想法:
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週期)。