根据名称对不同文件夹中的 csv 文件进行分类

根据名称对不同文件夹中的 csv 文件进行分类

我有很多 csv 文件,我想根据它们的文件名将它们分类到不同的文件夹中。

  1. 调用的文件*lefto.csv将保存在名为lefto
  2. 调用的文件*righto.csv将保存在名为right
  3. 调用的文件*sagital.csv将保存在名为sagittal
  4. 名称不符合任何先前条件的文件将保存在名为的文件夹中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/

去除 echos一旦你确信它正在做你想要的事情

答案2

你可以做这样的事情:

mkdir -p lefto righto sagital
for prefix in lefto righto sagital; do
    mv -- *"$prefix.csv" $prefix/
done 
mv -- *.csv animals/

相关内容