Классифицируйте файлы CSV в различных папках согласно их имени

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

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

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

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

2 ответа

Походит на a case оператор был бы соответствующим здесь. Это должно работать в ударе или других подобных Границе оболочках:

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

затем

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

Удалите echos, после того как Вы убеждены, что это делает то, что Вы хотите

5
ответ дан 1 December 2019 в 08:58

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

mkdir -p lefto righto sagital
for prefix in lefto righto sagital; do
    mv -- *"$prefix.csv" $prefix/
done 
mv -- *.csv animals/
5
ответ дан 1 December 2019 в 08:58

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

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