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

任何帮助将不胜感激

4

1 回答 1

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
于 2013-05-07T21:15:52.247 回答