Перебирать файлы с пробелами в именах, создавать новую папку из первого символа в каждом файле и перемещать файлы в папки

manjaro-features является зависимостью от manjaro-welcome :

$ pactree -rs manjaro-features
manjaro-features
└─manjaro-welcome

Таким образом , он удаляется -s , цитируя man pacman :

Удалить каждую указанную цель, включая все их зависимости ...

1
08.05.2019, 01:48
2 ответа

С GNU Parallel это выглядит так:

parallel 'mkdir -p {=s/(.).*/$1/=}; mv {} {=s/(.).*/$1/=}' ::: *

(Редактировать :Только что заметил, что вы запрашиваете файлы -, а не каталоги. / удален ).

0
27.01.2020, 23:30

Для перебора файлов с пробелами в именах оболочки достаточно, не нужно вызыватьls:

for    i in *                   # * replaces the complex (and unquoted) `/bin/ls | xargs`
do
       dir=${i%"${i#?}"}        # replaces the slow subshell `echo "$i" | cut -c 1 -`

       echo "$i"                # just to show that an * is enough (and accepts spaces).
done

И для обработки каждого файла из списка (, который включает каталоги ), вы должны проверить, что имя файла является файлом (, а не каталогом ), а также проверить, не существует ли каталог перед его созданием.

for i in *
do
    if [ -f "$i" ]; then
        dir=${i%"${i#?}"}
        if [ ! -d "$dir" ]; then
            mkdir -m777 -p "$dir"
        fi
        mv "$i" "$dir"
        if [ "$?" -ne 0 ]; then
            echo "An error occurred moving file \"$i\" to dir \"$dir\""
        fi
    fi
done
2
27.01.2020, 23:30

Теги

Похожие вопросы