Son*_*lme 4 command-line files
我有很多 csv 文件,我想根据它们在不同文件夹中的文件名进行分类。
*lefto.csv将保存在名为的文件夹中lefto*righto.csv将保存在名为的文件夹中right *sagital.csv将保存在名为的文件夹中sagittal animals到目前为止,我一直在使用该mv命令,但我想做一个循环。
似乎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小号一旦你确信它是做你想要什么
你可以这样做:
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)