【问题标题】:Get date from filename and sort into folders?从文件名中获取日期并分类到文件夹中?
【发布时间】:2016-11-15 09:11:46
【问题描述】:

我正在运行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/data 或 /tmp/data 然后移动到 /home/data/YYYY_MM_DD 吗?这将更容易做到。或者您是否有直接下载到 YYYY_MM_DD 目录的紧急需求?祝你好运。
  • 当然,如果你知道怎么做,我完全愿意将所有内容下载到一个文件夹中,然后将其移动到需要去的地方。

标签: bash ssh command-line wget


【解决方案1】:

将所有文件的下载保存到一个目录 /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

【讨论】:

  • 你能改变它,使文件最初下载到 /home/files/ 然后移动到 /home/data/DATE 吗?我不确定如何更改 mv "$filename" "$date" 以使其像那样工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多