bash - 从文件名获取日期并分类到文件夹中?

标签 bash ssh command-line wget

我正在运行wget来从FTP服务器获取数据,如下所示:

wget -r -nH -N --no-parent ftp://username:password@example.com/ -P /home/data/

所有文件的格式都与此类似:
2016_07_10_bob-randomtext.csv.gz
2016_07_11_joe-importantinfo.csv.gz

现在,它将所有这些文件放入/home/data/

我要做的是从文件名中获取时间,然后根据日期将其放入自己的文件夹中。例如:
/home/data/2016_07_10/2016_07_10_bob-randomtext.csv.gz
/home/data/2016_07_11/2016_07_11_joe-importantinfo.csv.gz

基于answers here,可以从文件名获取日期。但是,我不确定如何自动将其转换为文件夹...

抱歉,这有点令人困惑。任何帮助或建议,将不胜感激。

最佳答案

将所有文件下载到一个目录/ home / files中

destination=/home/data
for filename in /home/files/*; do
    if [[ -f "$filename" ]]; then          # ignore it if it's a directory (not a file)
        name=$(basename "$filename")
        datedir=$destination/${name:0:10}  # first 10 characters of the filename
        mkdir -p "$datedir"                # create the directory if it doesn't exist
        mv "$filename" "$datedir"
    fi
done

关于bash - 从文件名获取日期并分类到文件夹中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38340529/

相关文章:

linux - SSH 代理转发特定 key 而不是所有已注册的 ssh key

c - 如何检查命令行参数中的最后一个字符?

windows - 参见 .exe 的 std::cout

linux - grep 的基本表达式不支持\d 吗?

windows - OSX 上的 scp 不允​​许用户名中有空格?

linux - 在 Linux 上连接两个文件

vb.net - 上传文件到服务器时WinSCP错误 "No such file"

c - OSX 命令行 C 应用程序中的线程管理

linux - 观察 bash 脚本的输出

python - 无法使用 python --version 在 linux 上使用 Popen 获取 python 版本