Моя цель - найти дубликаты имен файлов, сравнив все имена файлов (ab c .xyz, def.csv) в одном каталоге. если нет повторяющихся имен файлов, переместите все эти файлы (.csv, .xlsx) по указанному пути к файлу в путь к архиву.
Если есть дубликаты имен файлов, извлеките имена этих дубликатов имен файлов. только с их измененной временной датой и отправьте уведомление по электронной почте команде и переместите оставшиеся неповторяющиеся имена файлов в папку архива.
Как вы можете видеть, я пытаюсь добиться этого с помощью следующего кода.
если команда find пуста, выполните условие if, выполните команду mv и полностью выйдите из сценария, если они являются дублирующимися файлами, затем выйдите из условия if и передайте дубликаты файлов и выполните почту и дату Операция печати.
Тем не менее, код, который на самом деле делает, отправляет уведомление по электронной почте, если он находит или не находит дубликаты файлов.
, если есть дубликаты файлов, затем отправьте письмо с дубликатом имена файлов и имя модификации, если нет повторяющихся имен файлов, то это поиск имени файла как пустого и текущего времени как измененного времени.
в настоящее время нет файлов вне архива (только файлы внутри архива, но все файлы внутри архива уникальны и выглядят хорошо), поэтому технически это не должно отправить любое уведомление по электронной почте.
![sourcefolder](https://i.stack.imgur.com/CIqyF.png)
![data source inside archive](https://i.stack.imgur.com/sBiYy.png)
{
DATE=`date +"%Y-%m-%d"`
dirname=/marketsource/SrcFiles/Target_Shellscript_Autodownload/Airtime_Activation
tempfile=myTempfileName
find $dirname -type f > $tempfile
cat $tempfile | sed 's_.*/__' | sort | uniq -d|
while read fileName
do
grep "$fileName" $tempfile
done
}
if ["$fileName" == ""]; then
mv /marketsource/SrcFiles/Target_Shellscript_Autodownload/Airtime_Activation/*.xlsx /marketsource/SrcFiles/Target_Shellscript_Autodownload/Airtime_Activation/Archive
mv /marketsource/SrcFiles/Target_Shellscript_Autodownload/Airtime_Activation/*.csv /marketsource/SrcFiles/Target_Shellscript_Autodownload/Airtime_Activation/Archive
exit 1
fi | tee '/marketsource/scripts/tj_var.txt' | awk -F"/" '{print $NF}' | tee '/marketsource/scripts/tj_var.txt' | sort -u | tee '/marketsource/scripts/tj_mail.txt'
DATE=`date +"%Y-%m-%d"`
printf "%s\n" "$(</marketsource/scripts/tj_mail.txt)" | while IFS= read -r filename; do
mtime=$(stat -c %y "/marketsource/SrcFiles/Target_Shellscript_Autodownload/Airtime_Activation/$filename")
printf 'Duplicate Filename - %s Uploaded time - %s\n\n' "$filename" "$mtime"
done | mail -s "Duplicate file found ${DATE}" ti@gmail.com