该脚本的目标是检查文件夹中是否存在文件名。如果文件名不存在,则删除该文件。
这是我到目前为止的脚本
#!/bin/bash
echo "What's the folder name?"
read folderName
$fileLocation="/home/daniel/Dropbox/Code/Python/FR/alignedImages/$folderName"
for files in "/home/daniel/Dropbox/Code/Python/FR/trainingImages/$folderName"/*
do
fileNameWithFormatFiles=${files##*$folderName/}
fileNameFiles=${fileNameWithFormat%%.png*}
for entry in "/home/daniel/Dropbox/Code/Python/FR/alignedImages/$folderName"/*
do
fileNameWithFormat=${entry##*$folderName/}
fileName=${fileNameWithFormat%%.png*}
if [ -f "/home/daniel/Dropbox/Code/Python/FR/alignedImages/$fileNameFiles.jpg" ]
then
echo "Found File"
else
echo $files
rm -f $files
fi
done
done
read
我有两个文件夹,alignedImages
和trainingImages
。
alignedImages
中的所有图片都在trainingImages
内,但不在其他地方。所以,我试图做到这一点,以便如果trainingImages
不包含与alignedImages
中的文件同名的文件,那么我希望它删除{{1中的文件}}
此外,图片不一样,所以我不能只比较md5或哈希或其他什么。只是文件名是相同的,除了它们是.jpg而不是.png
答案 0 :(得分:1)
fileLocation="/home/daniel/Dropbox/Code/Python/FR/alignedImages/$folderName"
echo "What's the folder name?"
read folderName
rsync --delete --ignore-existing $fileLocation $folderName
rsync
命令是您正在查找的内容,当给出--delete
选项时,它将从目标目录中删除源目录中不存在的任何文件,--ignore-existing
将导致rsync如果目标目录中已存在具有相同名称的文件,则跳过从源复制文件。
这样做的副作用是它会复制源目录中的任何文件,但不会复制到目标文件中。你说源中的所有文件都在目的地,所以我猜这没关系
答案 1 :(得分:0)
有更好的方法!文件,而不是for
循环!
#!/bin/bash
echo "What's the folder name?"
read folderName
cd "/home/daniel/Dropbox/Code/Python/FR/alignedImages/$folderName"
find . -type f -name "*.png" | sed 's/\.png//' > /tmp/align.list
cd "/home/daniel/Dropbox/Code/Python/FR/trainingImages/$folderName"
find . -type f -name "*.jpg" | sed 's/\.jpg//' > /tmp/train.list
这里是如何查找两个列表中的文件:
fgrep -f /tmp/align.list /tmp/train.list | sed 's/.*/&.jpg/' > /tmp/train_and_align.list
fgrep -v
找到非匹配而非匹配:在列车中查找文件但未对齐:
fgrep -v -f /tmp/align.list /tmp/train.list | sed 's/.*/&.jpg/' > /tmp/train_not_align.list
测试删除train_not_align.list中的所有文件:
cd "/home/daniel/Dropbox/Code/Python/FR/trainingImages/$folderName"
cat /tmp/train_not_align.list | tr '\n' '\0' | xargs -0 echo rm -f
(如果这会产生良好的输出,请删除echo
语句以实际删除这些文件。)