我有一个简单的(虽然对我来说不简单)的问题。如何创建包含文件名前缀的目录?
比方说,我有a.txt,b.txt,c.txt。 经过重复处理后,我想将结果保存在不同的目录中,如a_result/a_result.txt,b_result/b_result.txt,c_result/c_result.txt。
我该如何使用shell脚本来做到这一点?
谢谢!
我有一个简单的(虽然对我来说不简单)的问题。如何创建包含文件名前缀的目录?
比方说,我有a.txt,b.txt,c.txt。 经过重复处理后,我想将结果保存在不同的目录中,如a_result/a_result.txt,b_result/b_result.txt,c_result/c_result.txt。
我该如何使用shell脚本来做到这一点?
谢谢!
您可以使用参数扩展的${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
+1,这是有道理的,如果你正在做一些类似'用于输入* .txt'的东西,但是如果其中一个实际上是拼写出来的文件,那么可能更简单一些。 do ...' – 2014-09-23 04:30:59
如何用'mv'替换'some_command'行$ input“”$ {stem} _result/$ {stem} _result.txt“' – 2014-09-23 05:54:56
谢谢,伙计们!切普纳的命令为我工作。如果我想同时使用两个或多个文件,如'some_command a_1.txt a_2.txt',并保存在一个目录中,我该怎么办? – mbk0asis 2014-09-23 06:39:40
你也可以做
for let in a b c; do
mkdir -p "$let"_result
some_command "$let".txt > "$let"_result/"$let"_result.txt
done
你知道['基名(1)'](http://linux.die.net/man/1/basename)? – 2014-09-23 02:55:36