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