Advertisement
J3st3rs_j0k3

scsdcsd

Dec 5th, 2023
823
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.67 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Function to display usage
  4. display_usage() {
  5.     echo "Использование: $0 directory1 directory2"
  6.     echo "Сравнить содержимое двух каталогов"
  7. }
  8.  
  9. # Check if help option is specified
  10. if [[ ( $1 == "--help") ||  $1 == "-h" ]]; then
  11.     display_usage
  12.     exit 0
  13. fi
  14.  
  15. # Check if number of arguments is correct
  16. if [ "$#" -lt 2 ]; then
  17.     echo "Ошибка: Неправильное количество аргументов"
  18.     display_usage
  19.     exit 1
  20. fi
  21.  
  22. dir1=$1
  23. dir2=$2
  24.  
  25. # Compare the contents of the two directories
  26. for file in $(ls $dir1); do
  27.     if [ -e "$dir2/$file" ]; then
  28.         # Файл есть в двух папках, сравнивать по размеру и времени изменения
  29.         size1=$(stat -c %s "$dir1/$file")
  30.         size2=$(stat -c %s "$dir2/$file")
  31.         time1=$(stat -c %Y "$dir1/$file")
  32.         time2=$(stat -c %Y "$dir2/$file")
  33.  
  34.         if [ $size1 -eq $size2 ] && [ $time1 -eq $time2 ]; then
  35.             echo "Файл $file одинаков в двух каталогах"
  36.         else
  37.             echo -e "Файл $file отличается в двух каталогах.\nФайл $file имеет размер $size1 [bytes] и время $time1 в первой папке\nНо $file имеет размер $size2 [bytes] и время $time2 во второй папке"
  38.         fi
  39.     else
  40.         echo "Файл $file есть только в $dir1"
  41.     fi
  42. done
  43.  
  44. # Check for files present only in dir2
  45. for file in $(ls $dir2); do
  46.     if [ ! -e "$dir1/$file" ]; then
  47.         echo "Файл $file есть только в $dir2"
  48.     fi
  49. done
  50.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement