循环两个文件(重命名和移动)

Looping two files (Rename and Move)

首先,这是代码;

#!/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" 时,脚本无法正常工作。

谢谢!

假设 names.txtcate.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

我遇到了这个错误

nameAndMove: 第 8 行:意外标记附近的语法错误 <' nameAndMove: line 8:完成 < <(粘贴 iconNames.rtf iconCate.rtf)'

我用谷歌搜索了一下,有人说我的终端不允许进程替换。我使用 mac 终端。

谢谢