OS-Ubuntu 16.04
我的目标很简单。文件夹中有多张图片说
A.jpg
A.jpeg
B.jpg
B.jpeg
C.jpg
我想要具有.jpeg副本的jpg文件的名称。因此,在这种情况下,我想要名称A.jpg和B.jpg。请注意,我不需要C.jpg,因为它没有jpeg副本。
接下来,我要删除我具有其名称的.jpg文件。因此,在这种情况下,我只想删除A.jpg和B.jpg。
有一组命令可以做到吗? (我缩进了文件名,因为出于某种原因stackoverflow告诉我它是代码。)
编辑
有办法将这些文件名放在txt文件中,然后从中读取以删除所需的文件吗?
答案 0 :(得分:3)
您可以尝试:
for file in *.jpeg; do echo ${file%.*}.jpg; done
如果这是您想要的,只需将'echo'替换为'rm'
(已编辑),这样您就不会看到不存在文件的错误:
for file in *.jpeg; do [[ -f ${file%.*}.jpg ]] && rm ${file%.*}.jpg; done
答案 1 :(得分:1)
这可能是:
#!/bin/sh
JPG_LIST="*.jpg"
#JPG_LIST=$(cat JPG_filenames_to_test.txt)
for filename in $JPG_LIST; do
BASENAME="${filename%.*}"
echo -n "Basename '$BASENAME': "
if [ -e $BASENAME.jpg -a -e $BASENAME.jpeg ] ; then
echo "$BASENAME.jpeg found. Removing $BASENAME.jpg"
rm $BASENAME.jpg
else
echo "No $BASENAME.jpeg file found. Keeping original $BASENAME.jpg"
fi
done