2014-09-23 108 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 
相关问题