多个文件的脚本然后创建一个mvfile脚本将文件移动到目录认为我犯了一个错误

时间:2014-09-27 05:31:40

标签: linux bash shell

n=$1

for ((i=1;i<=n;++i)); do    
   touch "photo$1.gif"    
   touch "photo$2.gif"    
   touch "photo$3.gif"
done

//这是我的create_files脚本,我想制作相同的多个副本,我不这么认为 它的权利

我想将.gif文件移动到脚本执行的目录中,这是我的mvfile脚本

ext=.gif    
dir=$photo // not sure to see if directory exist yet     
if [ -d "$photo"];then    
   echo "file exists"    
   if [ ! od "$photo"]; then    
      mkdir photo #// make directory in case it does not exist    
   fi

for file in "*.gif"; do    
   my $file $dir
done

我试着看看它是否有效继续为此行添加语法错误

2 个答案:

答案 0 :(得分:1)

我希望你想要这样的东西 -

create_files脚本:

#!/bin/bash

n=$1

for ((i=1;i<=n;++i))
do
    touch "photo${i}.gif"
done

move_files脚本:

#!/bin/bash

FILES=`ls -1 | grep ".gif"`

DIR="photos"

if [ -e $DIR ]
then
    echo "$DIR exists"
else
    mkdir $DIR
    mv $FILES $DIR
fi

答案 1 :(得分:1)

关闭,关闭。什么给你带来问题的是你分配dir=$photo然后测试$photo而不是$dir(虽然效果应该是相同的,因为你将在你的dir中使用mv $file $dir $dir命令,您是更好的服务器测试mv)。由于您使用gif,其中第二个参数是目录,因此您可以将所有mv *.gif $dir 文件移动到sngle命令中的新位置:

dir="$photo"                     # Always quote string variables!
if [ -d "$dir" ]; then           # test if "$dir" (quoted) exists
    echo "dir: '$dir' exists"    # provide output showing success (not reqd)
    mv *.gif "$dir"              # move all .gif files in $PWD to "$dir"
else
    echo "dir: '$dir' not found" # provide feedback on failure
fi

这就是你所需要的一切。现在在脚本中进行设置:

dir="$photo"; [ -d "$dir" ] && mv *.gif "$dir" || echo "dir: '$dir' not found"

或简短版本:

{{1}}