创建按年份文件夹排序的符号链接

时间:2018-06-03 03:31:56

标签: bash shell

我有一个假日文件夹,所有图片都在同一文件夹中未分类,所有文件都标有年份。我想为今年创建一个文件夹。我已经解决了这个问题:

#!/bin/bash

SOURCE=/path/to/pictures

cd ~/pictures/sorted.by.year/
ls $SOURCE | grep -o -P '(?<!\d)\d{4}(?!\d)' | tr '/' '\n' | sort |
uniq | xargs mkdir

现在我的问题是,我想从文件名创建一个符号链接到所有年份文件夹,这样它就会创建符号链接,如下所示:

〜/图片/ sorted.by.year /的 2014 /symlink-picture.on.sister。的 2014 .JPG

〜/图片/ sorted.by.year /的 2012 /symlink-picture.on.dad。的 2012 .JPG

我尝试了xargs,但结果并不像上面的例子中那样。

有人知道该怎么做吗?

1 个答案:

答案 0 :(得分:1)

请检查此脚本,我在脚本后添加了更多行:

#!/bin/bash
SOURCE=/path/to/pictures

cd ~/pictures/sorted.by.year/
ls $SOURCE | grep -o -P '(?<!\d)\d{4}(?!\d)' | tr '/' '\n' | sort | uniq | xargs mkdir

for file in /path/to/pictures/*
do
    if [[ -d $file ]]; then # Skip directory
        continue;
    fi
    DIRNAME=$(echo "$file" | grep -o -P '(?<!\d)\d{4}(?!\d)');
    ln -s "$file" "./$DIRNAME/"
done