首先,这是代码;
#!/bin/bash
i=1;
while read line;
do
cp "$i.eps" "$line.eps"
while read line2;
do
mv "$line.eps" "$line2"
sed -i '1d' cate.txt
done < cate.txt
sed -i '1d' cate.txt
((i++))
done < Names.txt
cp "$i.eps" "$line.eps"
让我解释一下;我总共有2个文件。其中一个名为“Names.txt”,其中包含文件名。另一个文件是“cate.txt”,其中包含目录名称。我也有.eps文件的名字像; 1.eps,2.eps等...
所以,我想要做的是读取“Names.txt”中的第一行,然后用第一行更改第一个文件的名称,然后读取“cate.txt”中的第一行并移动第一行我在“cate.txt”
中读到的目录下的文件PS 1:我在那里使用了sed命令因为我总是在“cate.txt”中读取第一行。所以,我想在读完第一行后,我可以将其删除,然后再次读取第一行。但是代码并没有成功。
PS 2:在这段代码中,我可以阅读“Names.txt”并重命名.eps文件。但是当我开始阅读“cate.txt”时,脚本无法正常工作。
谢谢!
答案 0 :(得分:0)
假设names.txt
和cate.txt
具有相同的行数,您可以将它们连接在一起并使用该输出:
#!/bin/bash
i=1
while read filename dirname; do
mkdir -p $dirname
cp $i.file $dirname/$filename
((i++))
done < <(paste names.txt cate.txt)
运行前的示例:
$ tree
.
|-- 1.file
|-- 2.file
|-- 3.file
|-- cate.txt
`-- dirs.txt
$ cat names.txt
first_file
second_file
third_file
$ cat cate.txt
first_dir
second_dir
third_dir
之后:
$ tree
.
|-- 1.file
|-- 2.file
|-- 3.file
|-- cate.txt
|-- dirs.txt
|-- first_dir
| `-- first_file
|-- second_dir
| `-- second_file
`-- third_dir
`-- third_file
答案 1 :(得分:0)
我收到此错误
nameAndMove:第8行:意外令牌<'
nameAndMove: line 8:
附近的语法错误&lt; &lt;(paste iconNames.rtf iconCate.rtf)'
我用Google搜索,人们说我的终端不允许进程替换。我用mac终端。
谢谢