Shell脚本根据文件名将文件移动到另一个目录中

时间:2015-04-30 08:20:17

标签: bash shell

我是Unix shell脚本的新手。我有一个小任务,根据文件的名称将文件移动到另一个目录。 我有一个名为Cars的目录,其中包含.csv文件。我必须读取.csv文件名,并根据文件名将每个文件移动到另一个目录中,如下所示:

BMW_c.csv必须进入BMW/c/目录 Mercedes_x.csv必须进入Mercedes/x/目录。

我尝试使用for和if循环,但直到子目录才能执行。

我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

这样的事情可能会起作用

for f in *.csv; do
   DIR="$( echo ${f%.*} | tr '_' '/')"
   mkdir -p "./$DIR"
   mv "$f" "$DIR"
done

它将读取所有* .csv文件,在文件名中用'/'替换'_'(删除.csv),创建目录并移动文件。如果当前目录中没有csv文件,则会出现错误。

答案 1 :(得分:-1)

我已经完成了这个并且尝试过,它有效。如果脚本中的任何修改或增强,您可以发布您的答案..

 cd /DIR/Cars/BMW   
 for f in *.csv
 do
   filename="${f##*/}" 
 echo ${filename}        
      if [[ "${f}" == *c* ]]
         then 
         echo "moving files..."
         mv "${f}" /BMW/c/
       fi
done
cd /DIR/Cars/Mercedes
for f in *.csv
do
  filename="${f##*/}" 
 echo ${filename}     
      if [[ "${f}" == *x* ]]
        then 
       echo "moving files..."
        mv "${f}" /Mercedes/x/
       fi
done