Классифицировать файлы csv в разных папках в соответствии с их именем

У меня есть много файлов csv, которые я хочу классифицировать в соответствии с их именем в разных папках.

Файлы, называемые *lefto.csv, будут сохранены в папке с именем lefto Файлы, названные *righto.csv будут сохранены в папке с именем right. Файлы, названные *sagital.csv, будут сохранены в папке с именем sagittal Файлы с именами, не подчиняющимися никакому предыдущему условию, будут сохранены в папке с именем animals

До сих пор я использовал команду mv, но хотел бы сделать цикл.

4
задан 2 March 2018 в 22:26

4 ответа

Похоже, инструкция case будет уместна. Это должно работать в bash или других оболочках типа Bourne:

for f in *.csv; do case "${f%.csv}" in *.lefto) echo mv -- "$f" lefto/ ;; *.righto) echo mv -- "$f" righto/ ;; *.sagital) echo mv -- "$f" sagital/ ;; *) echo mv -- "$f" animals/ ;; esac done

Тестирование:

touch foo.lefto.csv bar.righto.csv baz.csv foo.sagital.csv

then

mv -- bar.righto.csv righto/ mv -- baz.csv animals/ mv -- foo.lefto.csv lefto/ mv -- foo.sagital.csv sagital/

Удалите echo когда вы убеждены, что он делает то, что вы хотите

5
ответ дан 17 July 2018 в 19:41

Вы можете сделать что-то вроде этого:

mkdir -p lefto righto sagital for prefix in lefto righto sagital; do mv -- *"$prefix.csv" $prefix/ done mv -- *.csv animals/
5
ответ дан 17 July 2018 в 19:41

Похоже, инструкция case будет уместна. Это должно работать в bash или других оболочках типа Bourne:

for f in *.csv; do case "${f%.csv}" in *.lefto) echo mv -- "$f" lefto/ ;; *.righto) echo mv -- "$f" righto/ ;; *.sagital) echo mv -- "$f" sagital/ ;; *) echo mv -- "$f" animals/ ;; esac done

Тестирование:

touch foo.lefto.csv bar.righto.csv baz.csv foo.sagital.csv

then

mv -- bar.righto.csv righto/ mv -- baz.csv animals/ mv -- foo.lefto.csv lefto/ mv -- foo.sagital.csv sagital/

Удалите echo когда вы убеждены, что он делает то, что вы хотите

5
ответ дан 23 July 2018 в 20:26

Вы можете сделать что-то вроде этого:

mkdir -p lefto righto sagital for prefix in lefto righto sagital; do mv -- *"$prefix.csv" $prefix/ done mv -- *.csv animals/
5
ответ дан 23 July 2018 в 20:26

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

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