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