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



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

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

我试着使用for和if循环,但直到子目录才能完成。

我非常感谢你的帮助。

类似的东西可能会在中工作

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新