创建一个unix脚本来排序和处理文件

时间:2016-11-08 14:13:23

标签: bash unix terminal

情况:

我的桌面上有一个名为unsorted_files的文件夹,其中包含大约1GB的不同文件类型(jpg,gif,docx,png,wav,mid,csv等)等。

除此之外,我在桌面上还有3个目录,只保存其专用文件类型(jpg,gif,docx)。

这些专用目录的实际目录名是:

jpgdirectory
gifdirectory
docxdirectory 

问题:

我想创建一个bash脚本,我可以在mac OS 10.10.5上运行终端,它将从unsorted_files文件夹中分离并处理这些文件类型,并根据文件类型将它们放入新创建的目录中。

即。执行脚本后,unsorted_files文件夹中的所有jpg文件都将被发送到jpgdirectory,所有gif文件将被分派到gifdirectory

需要注意的是,所有带有(jpgdirectory,gifdirectory,docxdirectory)的文件类型必须发送到其他文件

我怎样才能从bash脚本的角度实现这个目标,或者也许只能使用终端命令来完成。

1 个答案:

答案 0 :(得分:2)

要在bash中自动执行mkdir和mv命令,可以将其置于如下所示的“for”循环中。

代码:

#!/bin/bash

unsorted_path="/path/to/unsorted/dir"
output_path="/path/to/output/dirs"
for type in $(cat filetypes.txt)
do
   mkdir -p ${output_path}/${type}directory
   mv ${unsorted_path}/*.${type} ${output_path}/${type}directory/
done

'filetypes.txt'文件是一个文件类型列表,每行一个,例如:

jpg
gif
docx
png
wav
mid
csv

你也可以硬编码文件类型,即

#!/bin/bash

unsorted_path="/path/to/unsorted/dir"
output_path="/path/to/output/dirs"
for type in jpg gif docx png wav mid csv
do
   mkdir -p ${output_path}/${type}directory
   mv ${unsorted_path}/*.${type} ${output_path}/${type}directory/
done

希望这有帮助!

相关问题