У меня есть много файлов CSV, которые я хочу классифицировать согласно их имени файла в различных папках.
*lefto.csv
будет сохранен в папке названный lefto
*righto.csv
будет сохранен в папке названный right
*sagital.csv
будет сохранен в папке названный sagittal
animals
До сих пор я использовал mv
команда, но я хотел бы сделать цикл.
Походит на 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/
Удалите echo
s, после того как Вы убеждены, что это делает то, что Вы хотите
Вы могли сделать что-то вроде этого:
mkdir -p lefto righto sagital
for prefix in lefto righto sagital; do
mv -- *"$prefix.csv" $prefix/
done
mv -- *.csv animals/