使用列表重命名
Renaming with lists
我有一组文件,我想使用存储在 txt
文件中的新文件名来重命名它们。我的原始文件:
7170M
7172M
7187P
7192N
7198P
我想为每个文件名添加特定的新名称,以便上述文件成为:
1956_26_7170M
1962_12_7172M
1989_32_7187P
1986_22_7192N
1943_13_7198P
我创建了一个包含新文件名的文档 new_names.txt
并尝试了以下操作。
for f in *.txt; do mv "$f" "$new_name"; done < new_names.txt
但它只改变了第一个文件名。
您只能将名称的新部分存储在文件中(前提是您按排序顺序处理文件):
1956_26
1962_12
1989_32
1986_22
1943_13
然后,遍历文件,为每个文件读取一行:
for file in 7* ; do
read new
mv "$file" "$new"_"$file"
done < new_names.txt
你的主要问题是 for ... in
没有从文件中读取,而是遍历 in
之后给出的列表。在您的例子中,该列表只有一个成员:new_names.txt
。此外,您没有在任何地方填充 $new_name。
我有一组文件,我想使用存储在 txt
文件中的新文件名来重命名它们。我的原始文件:
7170M
7172M
7187P
7192N
7198P
我想为每个文件名添加特定的新名称,以便上述文件成为:
1956_26_7170M
1962_12_7172M
1989_32_7187P
1986_22_7192N
1943_13_7198P
我创建了一个包含新文件名的文档 new_names.txt
并尝试了以下操作。
for f in *.txt; do mv "$f" "$new_name"; done < new_names.txt
但它只改变了第一个文件名。
您只能将名称的新部分存储在文件中(前提是您按排序顺序处理文件):
1956_26
1962_12
1989_32
1986_22
1943_13
然后,遍历文件,为每个文件读取一行:
for file in 7* ; do
read new
mv "$file" "$new"_"$file"
done < new_names.txt
你的主要问题是 for ... in
没有从文件中读取,而是遍历 in
之后给出的列表。在您的例子中,该列表只有一个成员:new_names.txt
。此外,您没有在任何地方填充 $new_name。