我是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