【问题标题】:creating a unix script to sort and process files创建一个unix脚本来排序和处理文件
【发布时间】:2016-11-08 14:13:22
【问题描述】:

情况:

我的桌面上有一个名为 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 文件将被发送到 jpg 目录,所有 gif 文件将被分派到 gif 目录

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

我如何从 bash 脚本的角度来实现这个目标,或者这可以仅使用终端命令来完成。

【问题讨论】:

  • mv unsorted_files/*.jpg jpgdirectory/?移动所有分类文件后,您将留下“杂项”文件。

标签: bash unix terminal


【解决方案1】:

要在 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

希望这会有所帮助!

【讨论】:

  • marcus filetypes.txt 文件,是在脚本之外制作一个单独的txt文件还是可以嵌套在脚本中?
  • 是的。filetypes.txt 是一个单独的文件。第二个代码示例允许将文件类型硬编码到脚本中(即for type in jpg gif docx png wav mid csv...
猜你喜欢
  • 2011-07-17
  • 2011-04-25
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多