我有很多点文件需要更改以用于模型输入。我想根据文件的内容重命名许多这些文件。这些文件是按行排列的文本文件。
文档名称: data_lat_long.txt
1 data_20_20
2 data_30_40
3 data_50_60
.
.
Run Code Online (Sandbox Code Playgroud)
等等
我的文件被命名为1
,2
,3
,4
,等,。
我想1
在要被改变data_20_20
,2
在对data_30_40
等。
while read line ; do
mv $line
done < data_lat_long.txt
Run Code Online (Sandbox Code Playgroud)
将 的内容重定向data_lat_long.txt
到一个while
循环,该循环read
用于读入文件的每一行,并为每一行将其分配给一个名为$line
. 然后将mv
的内容$line
作为参数运行(这是您在data_lat_long.txt
文件中指定的 from 和 to 部分)。继续循环直到文件结束。
请注意,这隐含地要求您的文件名中都不data_lat_long.txt
包含空格(因此只有两列)。
如果文件中有空格,那么我建议在您的文件中使用逗号分隔符:
1,space file1
2,space file2
3,space file3
Run Code Online (Sandbox Code Playgroud)
然后使用:
while IFS=',' read -a files
do
mv "${files[0]}" "${files[1]}"
done < list.txt
Run Code Online (Sandbox Code Playgroud)
这利用了-a
选项read
which 将由IFS
(在本例中为逗号)分隔的文本分配给名为$files
. 然后我们索引 上的各种元素mv
并用双引号引用参数""
。这是因为数组值在执行mv
命令时被扩展,因此文件中的空间不被mv
. mv 1 space file1
不做同样的事情mv "1" "space file1"
。前者命令尝试移动文件/目录,名称1
和space
一个叫做目录file1
。
归档时间: |
|
查看次数: |
4208 次 |
最近记录: |