Я надеюсь делать поиск командной строки дублирующихся загрузок в моем Downloads
папка.
Позвольте говорят, что я загружаю test.mp3
, но затем случайно загрузите его снова, 2-я загрузка обнаружится как test(1).mp3
. Я хочу искать любой файл, который имеет" (1)" в конце имени файла, но перед расширением файла. Что было бы команда, чтобы сделать это быть?
Я думаю, что это - то, что Вы ищете:
for f in ~/Downloads/*; do
if [[ $f == *\([1-9]\).* ]]; then
echo "$f"
fi
done
Править: @steeldriver указал, что шарики могут сделать вышеупомянутое, таким образом, простое решение - это:
printf '%s\n' ~/Downloads/*\([1-9]\).*
Я предпочитаю простой Bash, но Вы могли сделать это в одном использовании строки find
:
find ~/Downloads/ -name '*\([1-9]\).*'
Кроме того, мы можем вычислить контрольные суммы и распечатать дублированный (это независимо от дублированных соглашений о присвоении имен загрузки).
md5sum ~/Download/*.mp3 | awk 'a[$1]{print $2 }{ a[$1]=$2}'