【问题标题】:Moving each file into its own directory将每个文件移动到自己的目录中
【发布时间】:2012-09-26 18:08:39
【问题描述】:

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

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

【问题讨论】:

  • ${} 有一些特殊的语法,应该查一下 - 我很确定它不接受 "" 作为空字符串,只需将其省略即可。或者你可以选择$(echo $file|sed 's/\.sff//')

标签: bash


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    for file in *.*
    do
      dir=${file%.*}
      mkdir "$dir"
      newfile=$dir/$file
      mv "$file" "$newfile"
      ... do something with "$newfile"
    done
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 2018-03-02
      • 1970-01-01
      相关资源
      最近更新 更多