如何使用csv文件将文件夹拆分为多个文件夹?

时间:2017-12-15 14:53:37

标签: bash csv ubuntu directory

我正在使用Ubuntu并希望将图像文件夹(30k图像)拆分到不同的文件夹中。但是,我想对它们进行排序(不只是拆分成更小的子文件夹)。我有一个文件,其中包含有关图像文件夹目标的信息。该文件的结构如下:

  • 123.jpg,1
  • 124.jpg,2
  • 125.jpg,3

这应解释为:图像123.jpg到文件夹1,图像124.jpg到文件夹2,图像125.jpg到文件夹3。

在Ubuntu中有一种有效的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以按照以下方式根据文件中提供的说明移动文件:

awk -F"," '{ print "mv",$1,$2}' description.txt | sh

这假定description.txt中列出的目标目录已存在。

awk以逗号(description.txt)的形式读取,文件(由-F","设置)并将必要的字符串添加到第一个$1 })和第二($ 2)字段。首先使用不带| sh部分的上述命令来测试输出。如果一切正常,则添加| sh以执行它们,管道(|)将awk的输出导入shell

description.txt文件包含您的示例:

123.jpg, 1
124.jpg, 2
125.jpg, 3

答案 1 :(得分:0)

假设包含文件列表和目的地的文件名为 list.txt

你可以在bash shell中这样做:

while IFS=, read -r file destination
do
    echo "mv $file $destination/$file"
done < list.txt

这是基于这个问题和答案: How to parse a CSV file in Bash?