Linux: удалить дубликаты строк из for и вырезать - PullRequest
0 голосов
/ 02 января 2019

Итак, у меня есть файловая структура, которая выглядит следующим образом:

  • видео
    • abc.avi
    • party_2014.h264
    • test.avi
    • xxx.mkv

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

  • видео
    • видео AVI
      • abc.avi
      • test.avi
    • видео-h264
      • party_2014.h264
    • видео-мы
      • xxx.mkv

пока у меня есть этот код:

for i in $(find video -name "*.*" -print)
    do cut -d'.' -f2 <<< "$i" | uniq -c;
done

это вернет дубликаты avi, поэтому uniq не работает, как правильно удалить дубликаты?

1 Ответ

0 голосов
/ 02 января 2019

Этот простой скрипт может работать для вас:

#!/usr/bin/env bash    

shopt -s nullglob

dir=video
for file in "$dir"/*.*; do
    out=$dir/video-${file##*.}

    [[ -d $out ]] || mkdir -- "$out" || continue
    mv -- "$file" "$out"
done

Вы также можете указать расширения с помощью: in "$dir"/*.{avi,mkv,h264}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...