2013-05-07 19 views
0

我还没有找到最符合我需求的答案,并且我很抱歉,如果有人能够轻松找到答案。
我有一个脚本,可以根据文件名将文件移动到文件夹中。它工作完美,直到我意识到,一旦我解决了这个错误的文件(另一个脚本负责基于电子邮件主题行的文件命名)一旦我解决了这个问题,然后开始为每个文件制作一个文件夹。反正我有可以使这个脚本之前,先删除文件夹名称中的一切(。)文件夹创建减去文件编号?

这里是脚本

#!/bin/bash 
#folder script 
#Benjamin D. Schran 
MAIN_DIR=/PGHWH1/Photos 
cd $MAIN_DIR 
find . -maxdepth 1 -type f > SCRIPT_LOG1 
find . -name '* *' | while read fname 

do 
    new_fname=`echo $fname | tr " " "_"` 

    if [ -e $new_fname ] 
    then 
      echo "File $new_fname already exists. Not replacing $fname" 
    else 
      echo "Creating new file $new_fname to replace $fname" 
      mv "$fname" $new_fname 
    fi 
done 
find . -maxdepth 1 -type f | while read file; 
do 
f=$(basename "$file") 
    f1=${f%.*} 
if [ -d "$f1" ]; 
then 
    mv "$f" "$f1" 
else 
mkdir "$f1" 
chmod 777 "$f1" 
mv "$f" "$f1" 
fi 
done 

SCRIPTLOG=Script_log.$(date +%Y-%m-%d-%H-%M) 
find . -type f > SCRIPT_LOG2 
cd /PGHWH1/bin 
sh scriptlog.sh > $SCRIPTLOG.html 
mv $SCRIPTLOG.html /PGHWH1/log 
rm $MAIN_DIR/SCRIPT_LOG1 $MAIN_DIR/SCRIPT_LOG2 

我需要它做的是采取一个文件是

Filename-date.%.jpg 

,并

Foldername-date 

然后移动的

文件
Filename-date.1.jpg 
Filename-date.2.jpg 
Filename-date.3.jpg 

到相应的文件夹

Foldername-date 

但电流输出

Foldername-date.1 
Foldername-date.2 
Foldername-date.3 

任何帮助都将不胜感激

回答

0

下面的几行做我的bash的工作:

#first create a tmp file with unique directory names 
ls *.jpg | awk -F'.' '{print $1}' | uniq > dirs 

#second create the directories 
mkdir -p `cat dirs` 

#third move the files 
for i in `cat dirs`; do mv $i*.jpg $i/; done 

#(optionally) remove the tmp file 
rm dirs