首页 > 解决方案 > 如何通过 bash 脚本为目录中的单个文件创建文件夹?

问题描述

所以我有一个电影收藏被转储到一个文件夹中(我知道,回想起来是不好的做法。)我想稍微组织一下,这样我就可以使用 Radarr 来获取所有适当的元数据,但我需要所有单独的文件在他们自己的文件夹中。我创建了下面的脚本来尝试自动化该过程,但出现以下错误。

脚本

#! /bin/bash

for f in /the/path/to/files/* ;
 do
    [[ -d $f ]] && continue
    mkdir "${f%.*}"
    mv "$f" "${f%.*}"
done

编辑

因此,我现在按照 Benjamin W 的建议通过 Shellcheck.net 运行脚本。根据该站点,它不会引发任何错误,尽管当我尝试运行该命令时仍然会遇到相同的错误。

编辑 2*

现在没有错误,但是脚本在执行时什么也不做。

标签: bashfiledirectory

解决方案


分配只评估一次,而不是每当使用分配给的变量时,我认为这是您的脚本所假设的。

你可以使用这样的循环:

for f in /path/to/all/the/movie/files/*; do
    mkdir "${f%.*}"
    mv "$f" "${f%.*}"
done

这使用参数扩展而不是cut摆脱文件扩展名。


推荐阅读