Пытаюсь организовать файлы по расширению с помощью сценария (grep, for, foreach, find), но я поражен. Ищу совет [дубликат]

Этот вопрос уже задан ответ здесь:

Я хочу перебрать все файлы в исходном каталоге и вставить их в целевой каталог.

Пример списка файлов:

/source/folder/text.txt
/source/folder/document.pdf
/source/folder/that/is/deeper/picture.jpg
/source/folder/picture2.JPG

После запуска сценария я бы хотел, чтобы папка dest выглядела так:

/dest/folder/txt/text.txt
/dest/folder/pdf/document.pdf
/dest/folder/jpg/picture1.jpg
/dest/folder/jpg/picture2.JPG

Я узнал, что могу связать команды -exec на обратной стороне из найти , но я не думаю, что это то, что мне нужно.

grep может быть полезным, но поскольку это однострочный текст, я думаю, что его написание будет сложным.

Forloop кажется лучшим способом, но я не могу понять, как извлечь имя файла.

SOURCE=/my/source/dir/

for f in $SOURCE
do
  echo $f
done

$ f представляет собой только каталог и не отображает фактическое имя файла.

0
задан 28 November 2014 в 12:58

1 ответ

вот мой скрипт:

#!/bin/bash
#this script sorts files according to their extensions
oldIFS=$IFS
IFS= 

этот скрипт не будет сортировать файлы без расширения

\n' (find . -type f) > /tmp/temp for var in `cat /tmp/temp` do name=`basename "$var"` ext=`echo $name | cut -d'.' -f2- | cut -d'.' -f2- | cut -d'.' -f2- | cut -d'.' -f2- | cut -d'.' -f2- | cut -d'.' -f2- | cut -d'.' -f2-` mkdir -p $ext mv "$var" $ext/ 2> /dev/null done IFS=$oldIFS

этот скрипт не будет сортировать файлы без расширения

1
ответ дан 6 October 2019 в 09:13

Другие вопросы по тегам:

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