如何创建一个脚本来创建结构并通过将文件移动到目录中来对文件进行排序?

如何创建一个脚本来创建结构并通过将文件移动到目录中来对文件进行排序?

我有一堆文件,第一行都是日期。它们都以相同的前 2 个字母“ff”开头。我需要创建一个脚本,该脚本将使用所有文件中的第一行,并在创建这些目录的目录中对它们进行排序。

例如 1 个文件包含:

猫锉

我需要提取完整日期,将所有文件移动到年份的目录中,然后是月份的子目录和日期的另一个子目录。到目前为止,我有这个脚本,它只按年份移动文件。有人告诉我可以使用 -p 函数,但实际上我已经使用 UNIX 3 天了,所以现在很困惑。

脚本

答案1

你应该阅读手册页:

  • 男人1切
  • 人 1 mkdir

提示:

  • cut -f1,2,3使您能够输出多个字段
  • cut --output-delimiter=CHAR允许您覆盖输出分隔符,默认为输入分隔符
  • mkdir -p a/b/c创建目录层次结构A/b/C, IEb是子目录AC是子目录b

答案2

这是一个解决方案:

outputPath='/path/to/output/'
for file in $(find ~/filesToSort/ -type f -name "ff*")
do
    firstLine=$(head -n 1 $file)
    datePath="${firstLine//-//}"
    mkdir -p $outputPath$datePath
    mv $file $outputPath$datePath
done

基本上,这个脚本的作用是:

  1. 列出所有文件
  2. 将文件的第一行获取到字符串中
  3. 将字符串中的“-”替换为“/”以创建路径
  4. 创建路径
  5. 将文件移动到新创建的路径

您可能需要添加测试以确保第一行与所需的模板匹配。

相关内容