Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将每个文件移动到其自己的目录中_Bash - Fatal编程技术网

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

Bash 将每个文件移动到其自己的目录中,bash,Bash,我试图编写一个脚本,其中一个目录中有多个文件,但我想为每个文件创建一个具有特定扩展名的目录(目录名中没有文件扩展名),并将每个文件移动到它们自己的目录中,然后对其各自目录中的每个文件执行某些操作。 我真的是新来的,所以这是我得到的,它不工作,所以任何帮助将不胜感激 for file in *; do if [ $file=[$.sff]] ; then mkdir ${$file/.sff/""/} mv $file ${fil

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

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

您不需要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

${}有一些特殊的语法,应该查找一下-我相当确定它不接受
作为空字符串,只需将其忽略即可。或者您可以使用
$(echo$file|sed's/\.sff/')
for file in *.*
do
  dir=${file%.*}
  mkdir "$dir"
  newfile=$dir/$file
  mv "$file" "$newfile"
  ... do something with "$newfile"
done