我有很多 csv 文件,我想根据它们的文件名将它们分类到不同的文件夹中。
- 调用的文件
*lefto.csv
将保存在名为lefto
- 调用的文件
*righto.csv
将保存在名为right
- 调用的文件
*sagital.csv
将保存在名为sagittal
- 名称不符合任何先前条件的文件将保存在名为的文件夹中
animals
到目前为止我一直在使用该mv
命令,但我想创建一个循环。
答案1
似乎case
这里需要声明一下。这应该在 bash 或其他类似 Bourne 的 shell 中有效:
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一旦你确信它正在做你想要的事情
答案2
你可以做这样的事情:
mkdir -p lefto righto sagital
for prefix in lefto righto sagital; do
mv -- *"$prefix.csv" $prefix/
done
mv -- *.csv animals/