从文件名中获取日期并分类到文件夹中?
Get date from filename and sort into folders?
我 运行 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
我 运行 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