2014-09-23 111 views
1

我有一個簡單的(雖然對我來說不簡單)的問題。如何創建包含文件名前綴的目錄?

比方說,我有a.txt,b.txt,c.txt。 經過重複處理後,我想將結果保存在不同的目錄中,如a_result/a_result.txt,b_result/b_result.txt,c_result/c_result.txt。

我該如何使用shell腳本來做到這一點?

謝謝!

+0

你知道['基名(1)'](http://linux.die.net/man/1/basename)? – 2014-09-23 02:55:36

回答

3

您可以使用參數擴展的${param%word}形式從輸入文件名中去除.txt並創建相應的目錄和輸出文件名。

for input in a.txt b.txt c.txt; do 
    stem=${input%.txt} 
    mkdir -p "${stem}_result" 
    some_command "$input" > "${stem}_result/${stem}_result.txt" 
done 
+0

+1,這是有道理的,如果你正在做一些類似'用於輸入* .txt'的東西,但是如果其中一個實際上是拼寫出來的文件,那麼可能更簡單一些。 do ...' – 2014-09-23 04:30:59

+0

如何用'mv'替換'some_command'行$ input「」$ {stem} _result/$ {stem} _result.txt「' – 2014-09-23 05:54:56

+0

謝謝,夥計們!切普納的命令爲我工作。如果我想同時使用兩個或多個文件,如'some_command a_1.txt a_2.txt',並保存在一個目錄中,我該怎麼辦? – mbk0asis 2014-09-23 06:39:40

0

你也可以做

for let in a b c; do 
    mkdir -p "$let"_result 
    some_command "$let".txt > "$let"_result/"$let"_result.txt 
done 
相關問題