Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.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
Unix基于文件名创建目录,并将文件移动到目录中_Unix - Fatal编程技术网

Unix基于文件名创建目录,并将文件移动到目录中

Unix基于文件名创建目录,并将文件移动到目录中,unix,Unix,我正在尝试编写一个Unix脚本,根据文件名创建目录,并将这些文件移动到指定的目录 文件模式: *普通*nn.pdf(例如4520009455604706\u普通\u 1221.pdf) 要创建的目录:Cynn(例如Cy21) [注意:需要一个步骤来检查目录是否存在,如果不存在,则创建新目录] 创建上述目录后,我需要将所有与*PLAIN*21.pdf匹配的文件移动到目录/Cy21 [编辑]下面添加了解决方案。我的解决方案如下: #!/bin/sh for file in *.pdf do if

我正在尝试编写一个Unix脚本,根据文件名创建目录,并将这些文件移动到指定的目录

文件模式: *普通*nn.pdf(例如4520009455604706\u普通\u 1221.pdf)

要创建的目录:Cynn(例如Cy21) [注意:需要一个步骤来检查目录是否存在,如果不存在,则创建新目录]

创建上述目录后,我需要将所有与*PLAIN*21.pdf匹配的文件移动到目录/Cy21


[编辑]下面添加了解决方案。

我的解决方案如下:

#!/bin/sh
for file in *.pdf
do
  if test -s $file
  then
    cycle=`echo $file | awk -F'.' '{print $1}' | awk '{print substr($0,(length($0)-1))}'`
dir="./Cy"$cycle
if [ -d $dir ]
then
    mv $file ./Cy$cycle
else
    mkdir $dir
    mv $file $dir
fi
  else
        echo "File error"
        echo $file
  fi
done

你贴的剧本在我的盒子上很好用。该错误意味着您在此处发布的代码与您尝试运行的代码不同。你确定这是相同的代码吗?是的,我甚至尝试了一个简单的for循环,但仍然得到相同的错误。我使用kshshell通过以下命令执行脚本:
sh test.sh
。sh和ksh不是一回事。您确定/bin/sh是ksh吗?即使我尝试使用
ksh test.ksh
命令执行以下脚本,它也会返回相同的错误<代码>#/bin/ksh,用于*do if test-s$file中的文件,然后echo$file else echo“Not”fi done我已确定问题。这是由不正确的下线字符引起的。我用Notepad++将其转换为UNIX/Linux格式,解决了这个问题。谢谢你的帮助。@jDo谢谢你的链接。:)