回文章列表
作者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
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻