我正在尽力描述这种情况。提前致谢。
步骤1:将图像复制到桌面上的文件夹到新文件夹01,02,03,...将图像重命名为thumb.jpg
第2步:创建一个包含原始文件夹名称的新.txt。
file=${01}
cd ~/Desktop/TEST
(while read $file; do
find . -type f -name "*300x250.jpg" 2>/dev/null | \
(while read s; do
IFS='/' read -ra FOLDERS <<< "$s"
THUM=${s%.*}
mkdir -p ~/Desktop/$file/
cp "$s" ~/Desktop/$file/Thumb.jpg
file=${01+1}
done
)
)
例:
TEST_FOLDER包含
AD-123456-44 -> AD-123456-44_300x250.jpg
MT-333333-11 -> MT-333333-11_300x250.jpg
SA-222222-33 -> SA-222222-33_300x250.jpg
在桌面上的结果
01 -> AD-123456-44.txt - thumb.jpg
02 -> MT-333333-11.txt - thumb.jpg
03 -> SA-222222-33.txt - thumb.jpg
请看下面的图片:
我查看了你的代码,并决定重新开始。在我看来,你使它变得比它需要的更复杂。这是我的代码:
#!/bin/bash
sourcedir=~/SO/sourcedir
targetdir=~/Desktop/TEST
targetsubdir_counter=1
cd $sourcedir
for dir in $(find . -maxdepth 1 -type d -print | egrep -v "^\.$")
do
cd $dir
if [ $targetsubdir_counter -lt 10 ]
then
targetsubdir_name="0$targetsubdir_counter"
else
targetsubdir_name="$targetsubdir_counter"
fi
newdir="$targetdir/$targetsubdir_name"
mkdir -p $newdir
for file in "*300x250.jpg"
do
cp $file $newdir/thumb.jpg
textfilename=$(echo $file | sed 's/\(.*\)_300x250.jpg$/\1.txt/')
echo "$sourcedir/$dir" > $newdir/$textfilename
done
cd ..
(( targetsubdir_counter = targetsubdir_counter + 1 ))
done
for
遍历$sourcedir
下的每个目录。 find
确保只处理第一级目录。 egrep -v
删除当前目录(.
)。0x
,这就是if
所做的。for
循环浏览名称中包含“_300x250.jpg”的文件。sed
在上一行中计算该文件的名称。请注意,我使用cp
并注意mv
,因为我想保持源目录不变。我建议你这样做,只有在对结果满意后才删除源。