作者mystea.bbs@ptt.cc (mystea) 看板: linux
標題Re: [問題] 更改大量檔名有無釜底抽薪的辦法?
時間批踢踢實業 (2008/02/28 Thu 18:03:34)
謝謝您的答覆, 我開始學了一點script, 這篇的內容已經能看懂了.
我現在有一個比較複雜的事想做:
假使test/底下有
test/a_a/
test/b/
test/a_a/1/
test/a_a/2/
test/a_a/3/
test/b/1/
test/b/2/
test/b/3/
等等亂七八糟的一堆目錄, 在每一個深度為2的目錄(也就是test/a_a/1 等)裡都有
一個檔案叫做output. 但是深度為1的目錄裡, 有的也有output.
現在我想要把這種種不同目錄裡的input都複製到同一個目錄testResult/ 底下, 檔名
希望是input-a_a-1, input-b-1, ...等(亦即把目錄名裡的/改成-), 這樣的要求, 有
辦法用bash script做到嗎?
大致上, 我想我需要一個能夠處理字串的工具, 要能夠把有三個"/"的檔名找出來,
還要有能夠把/替換成-的工具, 以及把多餘字串丟掉的工具...
希望有高手不吝賜教.
※ 引述《kenduest.bbs@bbs.sayya.org (小州)》之銘言:
: ※ 引述《mystea.bbs@ptt.cc (mystea)》之銘言:
: > 我有一個目錄, 這個目錄裡有很多子目錄.
: > 比方說: test/ 底下有
: > 1/ 2/ 3/ ......多個不同目錄.
: > 如果說今天每一個目錄裡都一個叫做input的檔案, 而我想把他們統統改名成output,
: > 不知道有沒有甚麼簡單解決的辦法?
: for name in $(find test -type f -name input)
: do
: mv $name $(dirname $name)/output
: done
: > 另外, 如果我想把某一個檔案複製到每一個子目錄裡, 又該怎麼辦呢?
: > 我有試著在test底下製造一個檔案s, 然後: cp s */
: for name in $(find test -type d)
: do
: cp /path/filename $(name)
: done
: > terminal回傳:
: > cp: omitting directory `1/'
: > cp: omitting directory `2/'
: > 最終結果是只有3/成功獲得了s
: > 請問我該如何是好?
: 建議學習學寫 shell script 會有幫助
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 76.170.235.113