文件夹创建减去文件编号?

时间:2013-05-07 01:57:58

标签: bash copy rename directory

我找不到最能满足我需求的答案,如果有人能够轻松找到,我会道歉。
我有一个脚本,可以根据文件的名称将文件移动到文件夹中。它完美地工作,直到我意识到一旦我修复了这个文件丢失了它的扩展(另一个脚本负责基于电子邮件主题行的文件命名)一旦我解决了这个问题它然后开始为每个文件创建一个文件夹。无论如何我可以让这个脚本在第一个(。)

之前删除文件夹名称中的所有内容

这是脚本

#!/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

任何帮助都将不胜感激

1 个答案:

答案 0 :(得分: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