循环两个文件(重命名和移动)
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.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
我遇到了这个错误
nameAndMove: 第 8 行:意外标记附近的语法错误 <'
nameAndMove: line 8:
完成 < <(粘贴 iconNames.rtf iconCate.rtf)'
我用谷歌搜索了一下,有人说我的终端不允许进程替换。我使用 mac 终端。
谢谢
首先,这是代码;
#!/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.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
我遇到了这个错误
nameAndMove: 第 8 行:意外标记附近的语法错误 <'
nameAndMove: line 8:
完成 < <(粘贴 iconNames.rtf iconCate.rtf)'
我用谷歌搜索了一下,有人说我的终端不允许进程替换。我使用 mac 终端。
谢谢