将每个文件移动到自己的目录中

时间:2012-09-26 18:08:39

标签: bash

我正在尝试编写一个脚本,其中我在目录中有多个文件但是我想为每个具有特定扩展名的文件创建一个目录(目录名中没有文件扩展名)并将每个文件移动到他们自己的文件中目录然后对其各自目录中的每个文件执行某些操作。  我真的很新,所以这是我已经得到的,它不起作用所以任何帮助将不胜感激!

for file in *;
     do
        if  [ $file=[$.sff]] ; then
          mkdir ${$file/.sff/""/}
          mv $file ${file/.sff/""/}/
            fi
        for $file in $file/
              do { ......
            }
done

2 个答案:

答案 0 :(得分:2)

您不需要if语句或case语句。只是做:

die() { echo "$*" >&2; exit 1; }
for file in *; do
  dir=${file%.*}
  test -d $dir || mkdir $dir  # or just mkdir -p $dir
  test -f $dir && die "$dir exists and is a file!"
  mv $file $dir
done
for dir in *; do ...; done  # Do something in each directory

答案 1 :(得分:0)

for file in *.*
do
  dir=${file%.*}
  mkdir "$dir"
  newfile=$dir/$file
  mv "$file" "$newfile"
  ... do something with "$newfile"
done