LINUX.ORG.RU

История изменений

Исправление legolegs, (текущая версия) :

Во-первых, тебе -ls тут не нужно. Парсить выхлоп ls (настоящего или его имитации от find) - плохая практика.

Во-вторых, если выхлоп упростить, то его проще парсить:

find -printf '%TY %p\n' |
    while read -r year fname; do
        printf '[%s] [%s]\n' "$year" "$fname"
        ls "$fname"
        # mv "$fname" "$year"/
    done
$ ls
'back\slash'  'dollar $sign'  'double  space'  'space space'   кириллица
$ find -type f -printf '%TY %p\n' | while read -r year fname; do printf '[%s] [%s]\n' "$year" "$fname"; ls "$fname"; done
[2020] [./кириллица]
./кириллица
[2020] [./double  space]
'./double  space'
[2020] [./back\slash]
'./back\slash'
[2020] [./dollar $sign]
'./dollar $sign'
[2020] [./space space]
'./space space'

Исправление legolegs, :

Во-первых, тебе -ls тут не нужно. Парсить выхлоп ls (настоящего или его имитации от find) - плохая практика.

Во-вторых, если выхлоп упростить, то его проще парсить:

find -printf '%TY %p\n' |
    while read -r year fname; do
        printf '[%s] [%s]\n' "$year" "$fname"
        ls "$fname"
        # mv "$fname" "$year"/
    done
$ ls
'back\slash'  'dollar $sign'  'double  space'  'space space'
$ find -type f -printf '%TY %p\n' | while read -r year fname; do printf '[%s] [%s]\n' "$year" "$fname"; ls "$fname"; done
[2020] [./double  space]
'./double  space'
[2020] [./back\slash]
'./back\slash'
[2020] [./dollar $sign]
'./dollar $sign'
[2020] [./space space]
'./space space'

Исходная версия legolegs, :

Во-первых, тебе -ls тут не нужно. Парсить выхлоп ls (настоящего или его имитации от find) - плохая практика.

Во-вторых, если выхлоп упростить, то его проще парсить:

find -printf '%TY %p\n' |
    while read -r year fname; do
        printf '[%s] [%s]\n' "$year" "$fname"
        ls "$fname"
        # mv "$fname" "$year"/
    done