我正在尝试使用SED创建一系列所有包含同名文件的目录,但每个目录中的每个文件都会有一行不同。SED目录创建错误
for i in $(cat ~/SCRIPTS/AALIST.txt); do
mkdir ~/jan10/25
sed -e "s/HAT/${i}/" <~/SCRIPTS/HAT25.inp > ~/jan10/25/25$i/mat.inp
AALIST.txt简直是含有有效文件..
A
B
C
D
E
而HAT25.inp有文本的多行,然后在第25行字“帽子”,这顶帽子应该用A,B,C等代替。在目录25中,SED应该创建名为25A,25B,25C等的目录。这些目录的内部应该是原始的HAT25.inp文件,用HAT替换为字母父目录。这意味着目录25A应该包含HAT.inp,并将其重命名为mat.inp,并在第25行包含A,而不是HAT。不幸的是,当我尝试执行上面我的代码,我得到的错误:
cannot create directory `/home/user/jan10/25': File exists
./loop.sh: line 23: /home/user/jan10/25/25$i/mat.inp: No such file or directory
有什么我做错了,我无法确定我做了什么错误的任何见解。
编辑:
通过注释掉MKDIR行,我现在收到以下错误。创建目录“25”,但不创建目录25A,25B等。收到的错误如下。
./loop.sh: line 23: /home/user/jan10/25/25A/mat.inp: No such file or directory
你意识到你的'mkdir'在你的循环中,并且在每个循环中执行因此,'不能创建目录...'。 ?也许你真的想'mkdir〜/ jan10/25/$ i'? '25/25 $ i'的错误有点神秘。鉴于你的代码,我不会期望这一点。是正在执行的真正的代码?祝你好运。 – shellter 2014-11-06 16:01:32
你是对的,mkdir绝对不应该在循环中,但即使这个问题被注释掉,问题仍然存在。目录25被创建,但是没有一个子目录(25A,25B等)被创建。我现在收到的错误已经在上面编辑了! – George 2014-11-06 16:08:32
我真的认为你问题的主要来源是你想'mkdir〜/ jan10/25/$ i',对吧?使用它可能会修复其他错误。 – shellter 2014-11-06 16:09:53