我想在同一目录中的文件夹中对类似文件进行分组。为了给出一个更好的主意,我正在处理图像数据集,其中我有几个具有不同文件名的主题的图像。但是我也会在数据集中为每个主题生成10-15个图像。所以让我们说主题A将有10个图像命名为A_1.png,A_2.png,A_3.png等等。所以,同样地,我们有n个主题。我必须将主题分组到具有与该主题相对应的所有图像的文件夹中。我尝试使用python,但我无法正确使用它。我们可以使用bash或shell脚本吗?如果是,请告知。
答案 0 :(得分:1)
我想在Shell脚本上建议这个,假设我在工作目录上有A_1.png,A_2.png,A_3.png,B_1.png,B_2.png。在第一个循环中,我使用“_”作为分隔符,在第二个循环中,我使用“A / B_”作为分隔符:
for _DIR in `ls -1 | grep png | awk -F"_" '{print $1}' | uniq`;
do
mkdir $_DIR;
for _FILE in `ls -1 | grep $_DIR\_`;
do
cp $_FILE $_DIR/;
done;
find $_DIR;
done;
例如:
A
A/A_1.png
A/A_2.png
A/A_3.png
B
B/B_1.png
B/B_2.png
答案 1 :(得分:0)
试试这段代码。我还把假文件生成器用于测试目的。
谨慎步骤: 只有在检查完一切后才能做到。
可能的改善 移动/重命名文件而不是复制和删除
for {1..5}中的aaa;触摸SUBJA _ $ {aaa} .txt SUBJB _ $ {aaa} .txt SUBJC _ $ {aaa} .txt;完成
用于SUBJA SUBJB SUBJC中的MYSUBJ
DO
mkdir $ MYSUBJ
cp $ MYSUBJ * .txt $ MYSUBJ /
rm $ MYSUBJ * .txt
完成