我正在尽力描述这种情况。提前致谢。
步骤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
)
)
示例:
测试文件夹包含
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
请参见以下图片:
答案 0 :(得分:0)
我查看了您的代码,并决定重新开始。在我看来,您使它变得比需要的复杂。这是我的代码:
#!/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
如果x <10,那么if
就是这样做的。for
循环浏览名称中包含“ _300x250.jpg”的文件。sed
在上一行中计算的。请注意,我使用cp
并注意mv
是因为我想保持源目录完整。我建议您也这样做,并且只有对结果满意后才删除源。