我在一个文件夹上有很多数字,它们都是.png 我也有像这样的txt文件
label first end group
Afghanestan 200 201 1
Afghanestankabol 12 14 1
Afghanestankabolindia 17 10 1
indiaAfghanestan 10 2 2
Holandnorway 500 400 3
holand 100 200 3
holandindia 400 300 3
USA 10 20 4
USAargentina 12 1 4
USAargentinabrazil 16 15 4
label
是图片的名称,这就是我要做的事情
我想创建与组一样多的文件夹(在本例中为4)
然后在名称前添加开始,并在图片名称的末尾添加结束,并将其移至指定给他们的文件夹
例如图片 Afghanestan
图像名称变为200A_fghanestan_201.png,它将被移动到文件夹1
一开始我以为我应该逐行读取文件
#!/bin/sh
value=`myfile.txt`
echo "$label"
输出将如下所示
4个文件夹。例如
user:outp admin$ ls
1 2 3 4
user:outp admin$ cd 1
user:1 admin$ ls
12_Afghanestankabol_14.png 200_Afghanestan_201.png
17_Afghanestankabolindia_10.png
答案 0 :(得分:1)
将以下文件保存在您的HOME目录中go
:
#!/bin/bash
sed '1d' myfile.txt | while read label first end group ; do
echo mkdir -p ${group}
echo mv ${label}.png ${group}/${first}_${label}_${end}.png
done
然后启动终端并使用以下命令使脚本可执行:
chmod +x $HOME/go
然后将目录更改为图像所在的位置,并使用以下命令运行脚本:
cd path/to/your/images
$HOME/go
如果您喜欢它的功能,请从中间的两行中删除单词echo
,它实际上会执行此操作。
<强>解释强>
脚本的第一行使用sed
删除文件的第一行,因为这只是标题。然后它一次读取一行到四个变量,生成输出目录(使用-p
,这样如果目录已经存在则没有错误)并将文件移动到适当的位置。
请制作文件的备份副本并首先运行它们!
答案 1 :(得分:0)
一般来说,您应该展示您尝试过的内容,然后社区将协助解决问题。我会给你一个开始:
while read label first end group
do
mv ${label}.png /path/to/${group}/${first}_${label}_${last}.png