Как объединить 2 каталога без перезаписи **разных **файлов с одинаковым относительным путем?

Обратите внимание, что эта проблема также затрагивает WindowMaker. Теперь вы все еще можете перемещать окна в wmaker, удерживая клавишу ALT и перетаскивая окно. В том числе и стим-клиент.

Есть ли аналог в Awesome?

Это все еще далеко от оптимального, но это обходной путь.

0
03.06.2021, 11:18
1 ответ

Не могу сказать, что знаю конкретную команду, которая сделает это за вас. Но вы можете сделать это, просто используя хеширование.

Наивный пример ниже:

#!/bin/bash

#...some stuff to get the files...

# Get hashes for all source paths
for srcFile in "${srcFileList[@]}"
do
  srcHashList+="$(md5sum "$srcFile")"
done

# Get hashes for all destination paths
for dstFile in "${dstFileList[@]}"
do
  dstHashList+="$(md5sum "$dstFile")"
done

# Compare hashes, exclude identical files, regardless of their path.
for srci in "${!srcHashList[@]}"
do
  for dsti in "${!dstHashList[@]}"
  do
    match=0
    if [ "${srcHashList[$srci]}" == "${dstHashList[$dsti]}" ]
    then
      match=1
    fi
    if [ $match != 1 ]
    then
      newSrcList+=${srcFileList[$srci]}
      newDstList+=${dstFileList[$dsti]}
    fi
  done
done
#...move files after based on the new lists

Это определенно можно было бы сделать чище, особенно если вас интересуют только файлы с идентичными путями друг к другу. Вероятно, это также можно было бы сделать за линейное время, но общая концепция будет работать.

0
28.07.2021, 11:27

Теги

Похожие вопросы