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

Son*_*lme 4 command-line files

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

  1. 调用的文件*lefto.csv将保存在名为的文件夹中lefto
  2. 调用的文件*righto.csv将保存在名为的文件夹中right
  3. 调用的文件*sagital.csv将保存在名为的文件夹中sagittal
  4. 名称不符合任何先前条件的文件将保存在名为 animals

到目前为止,我一直在使用该mv命令,但我想做一个循环。

ste*_*ver 5

似乎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
Run Code Online (Sandbox Code Playgroud)

测试:

touch foo.lefto.csv bar.righto.csv baz.csv foo.sagital.csv
Run Code Online (Sandbox Code Playgroud)

然后

mv -- bar.righto.csv righto/
mv -- baz.csv animals/
mv -- foo.lefto.csv lefto/
mv -- foo.sagital.csv sagital/
Run Code Online (Sandbox Code Playgroud)

取下 echo小号一旦你确信它是做你想要什么


ter*_*don 5

你可以这样做:

mkdir -p lefto righto sagital
for prefix in lefto righto sagital; do
    mv -- *"$prefix.csv" $prefix/
done 
mv -- *.csv animals/
Run Code Online (Sandbox Code Playgroud)