我是Unix shell脚本的新手。我有一个小任务,根据文件的名称将文件移动到另一个目录。
我有一个名为Cars
的目录,其中包含.csv文件。我必须读取.csv文件名,并根据文件名将每个文件移动到另一个目录中,如下所示:
BMW_c.csv
必须进入BMW/c/
目录
Mercedes_x.csv
必须进入Mercedes/x/
目录。
我尝试使用for和if循环,但直到子目录才能执行。
我非常感谢你的帮助。
答案 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