Возможно, вам нужно обновить свое ядро. Я считаю, что ядра Ubuntu ниже 4.5 не находят мой тачпад Elantech по умолчанию.
Вы можете перейти на более новую версию, например 4.5, используя инструкции, найденные здесь:
Как обновить ядро до последней версии mainline без какого-либо Distro-обновления?
Когда единственное отличие состоит в том, что файлы с именами должны иметь одинаковый контент и размер.
1. О содержании. Мы можем сравнить два файла командой diff file-1 file-2. Также мы можем использовать эту команду для теста следующим образом:
diff -q file-1 file-2 > /dev/null && echo 'equal' || echo 'different'
1. О содержимом. Мы можем найти файл с определенным размером по команде (где 12672 - размер файла в байтах):
find /path/to/search -type f -size 12672c -printf '%p\n'
Или мы можем использовать диапазон таким образом ( где 12600-12700 - это размер файла в байтах):
find /path/to/search -type f -size -12700c -size +12600c -printf '%p\n'
Обратите внимание, что по умолчанию команда find работает рекурсивно.
3. Объедините два метода (где file-1 - наш файл шаблонов):
find /path/to/search -type f -size -12700c -size +12600c -printf '%p\t' -exec sh -c 'diff -q file-1 "$1" > /dev/null && echo "equal" || echo "different"' sh {} \;
3. Объедините два метода Предположим, что мы имеем следующую структуру каталогов:
$ tree /tmp/test
/tmp/test
├── file-1 # this is the pattern file
├── file-2 # this is almost the same file but wit few additional characters
└── file-3 # this is exact copy of file-1
Результат указанной команды будет:
$ find /tmp/test -type f -size -12700c -size +12600c -printf '%p\t' -exec sh -c 'diff -q file-1 "$1" > /dev/null && echo "equal" || echo "different"' sh {} \;
/tmp/test/file-2 different # OK: here we have added few additional characters
/tmp/test/file-3 equal # OK: this is exact copy of file-1
/tmp/test/file-1 equal # OK: this is file-1 compared to its self
Или мы можем упростить выход, изменив нашу команду таким образом:
$ find /tmp/test -type f -not -name "file-1" -size -12700c -size +12600c \
-exec sh -c 'diff -q file-1 "$1" > /dev/null && printf "%s\tis equal\n" "$1"' sh {} \;
/tmp/test/file-3 is equal
Обновить из комментариев. Следующее командование для файла с тем же размером, что и file-1, а затем diff запятыми связано с параметрами --brief и --report-identical-files:
find /path -type f -not -name "file-1" -size $(stat -c%s file-1)c -exec diff -qs file-1 {} \;
Files file-1 and /tmp/test/file-3 are identical
Мы можем сравнить md5sum файлы следующим образом:
Получить md5sum файла шаблона:$ md5sum file-1
d18b61a77779d69e095be5942f6be7a7 file-1
Использовать его с помощью нашей команды: $ find /path -type f -not -name "file-1" -size $(stat -c%s file-1)c -exec sh -c 'echo "d18b61a77779d69e095be5942f6be7a7 $1" | md5sum -c -' sh {} \;
/tmp/test/file-3: OK
Если вы ищете (или согласитесь) приложение GUI, вы можете попробовать приложение «FSlint Janitor». Вы можете установить его, запустив
sudo apt-get install fslint
После установки выполните следующие действия.
Запустите приложение. Выберите опцию «Дублировать» (1) для поиска файлов с одним и тем же контентом. Нажмите кнопку «+ Добавить» (2) и выберите каталоги для поиска файлов (убедитесь, что опция «recurse» отмечена для включения подкаталогов). Нажмите кнопку «Найти» (3) и подождите.
При правильном использовании команда grep может быстро найти дубликат. Вы должны быть осторожны, чтобы не искать всю файловую систему, иначе для завершения потребуется несколько дней. Я недавно документировал это здесь: `grep`ing всех файлов для строки занимает много времени
Для оптимальной скорости использования:
grep -rnw --exclude-dir={boot,dev,lib,media,mnt,proc,root,run,sys,/tmp,tmpfs,var} '/' -e 'String in file'
Если ваш файл может быть в каталоге Windows удалите каталог mnt.
Если вы знаете, что файл находится в каталоге /home, где-то вы можете сократить команду:
grep -rnw '/home' -e 'String in file'
Это может занять некоторое время, но оно должно быть эффективным и надежным. Предполагается, что вы используете Bash. Замените file именем вашего переименованного файла:
shopt -s globstar
for i in **; do [ -f "$i" ] && cmp --silent file "$i" && echo "$i"; done
shopt -s globstar включает рекурсивное подтягивание с помощью **. Вы можете отключить его с помощью shopt -u globstar, но он отключен по умолчанию и отключится при открытии новой оболочки. for i in ** перебрать все файлы ниже этого. Запустите команду из каталога самого высокого уровня, который может содержать файл или каталог с файлом или каталогом ... (примените рекурсию к этому предложению!) [F7], если файл является обычным файлом, который существует тогда ... cmp --silent file "$i" &&, если нет разницы между file и проверяемым файлом (т. е. если cmp успешно завершается), тогда ... echo $i напечатает относительный путь файла (это также печатает путь к file но я не вижу большой пользы в том, чтобы это исправить). Благодаря этому ответу на Stack Overflow для метода cmp сравнения файлов.
Когда единственное отличие состоит в том, что файлы с именами должны иметь одинаковый контент и размер.
1. О содержании. Мы можем сравнить два файла командой diff file-1 file-2. Также мы можем использовать эту команду для теста следующим образом:
diff -q file-1 file-2 > /dev/null && echo 'equal' || echo 'different'
1. О содержимом. Мы можем найти файл с определенным размером по команде (где 12672 - размер файла в байтах):
find /path/to/search -type f -size 12672c -printf '%p\n'
Или мы можем использовать диапазон таким образом ( где 12600-12700 - это размер файла в байтах):
find /path/to/search -type f -size -12700c -size +12600c -printf '%p\n'
Обратите внимание, что по умолчанию команда find работает рекурсивно.
3. Объедините два метода (где file-1 - наш файл шаблонов):
find /path/to/search -type f -size -12700c -size +12600c -printf '%p\t' -exec sh -c 'diff -q file-1 "$1" > /dev/null && echo "equal" || echo "different"' sh {} \;
3. Объедините два метода Предположим, что мы имеем следующую структуру каталогов:
$ tree /tmp/test
/tmp/test
├── file-1 # this is the pattern file
├── file-2 # this is almost the same file but wit few additional characters
└── file-3 # this is exact copy of file-1
Результат указанной команды будет:
$ find /tmp/test -type f -size -12700c -size +12600c -printf '%p\t' -exec sh -c 'diff -q file-1 "$1" > /dev/null && echo "equal" || echo "different"' sh {} \;
/tmp/test/file-2 different # OK: here we have added few additional characters
/tmp/test/file-3 equal # OK: this is exact copy of file-1
/tmp/test/file-1 equal # OK: this is file-1 compared to its self
Или мы можем упростить выход, изменив нашу команду таким образом:
$ find /tmp/test -type f -not -name "file-1" -size -12700c -size +12600c \
-exec sh -c 'diff -q file-1 "$1" > /dev/null && printf "%s\tis equal\n" "$1"' sh {} \;
/tmp/test/file-3 is equal
Обновить из комментариев. Следующее командование для файла с тем же размером, что и file-1, а затем diff запятыми связано с параметрами --brief и --report-identical-files:
find /path -type f -not -name "file-1" -size $(stat -c%s file-1)c -exec diff -qs file-1 {} \;
Files file-1 and /tmp/test/file-3 are identical
Мы можем сравнить md5sum файлы следующим образом:
Получить md5sum файла шаблона:$ md5sum file-1
d18b61a77779d69e095be5942f6be7a7 file-1
Использовать его с помощью нашей команды: $ find /path -type f -not -name "file-1" -size $(stat -c%s file-1)c -exec sh -c 'echo "d18b61a77779d69e095be5942f6be7a7 $1" | md5sum -c -' sh {} \;
/tmp/test/file-3: OK
Если вы ищете (или согласитесь) приложение GUI, вы можете попробовать приложение «FSlint Janitor». Вы можете установить его, запустив
sudo apt-get install fslint
После установки выполните следующие действия.
Запустите приложение. Выберите опцию «Дублировать» (1) для поиска файлов с одним и тем же контентом. Нажмите кнопку «+ Добавить» (2) и выберите каталоги для поиска файлов (убедитесь, что опция «recurse» отмечена для включения подкаталогов). Нажмите кнопку «Найти» (3) и подождите.
При правильном использовании команда grep может быстро найти дубликат. Вы должны быть осторожны, чтобы не искать всю файловую систему, иначе для завершения потребуется несколько дней. Я недавно документировал это здесь: `grep`ing всех файлов для строки занимает много времени
Для оптимальной скорости использования:
grep -rnw --exclude-dir={boot,dev,lib,media,mnt,proc,root,run,sys,/tmp,tmpfs,var} '/' -e 'String in file'
Если ваш файл может быть в каталоге Windows удалите каталог mnt.
Если вы знаете, что файл находится в каталоге /home, где-то вы можете сократить команду:
grep -rnw '/home' -e 'String in file'
Это может занять некоторое время, но оно должно быть эффективным и надежным. Предполагается, что вы используете Bash. Замените file именем вашего переименованного файла:
shopt -s globstar
for i in **; do [ -f "$i" ] && cmp --silent file "$i" && echo "$i"; done
shopt -s globstar включает рекурсивное подтягивание с помощью **. Вы можете отключить его с помощью shopt -u globstar, но он отключен по умолчанию и отключится при открытии новой оболочки. for i in ** перебрать все файлы ниже этого. Запустите команду из каталога самого высокого уровня, который может содержать файл или каталог с файлом или каталогом ... (примените рекурсию к этому предложению!) [F7], если файл является обычным файлом, который существует тогда ... cmp --silent file "$i" &&, если нет разницы между file и проверяемым файлом (т. е. если cmp успешно завершается), тогда ... echo $i напечатает относительный путь файла (это также печатает путь к file но я не вижу большой пользы в том, чтобы это исправить). Благодаря этому ответу на Stack Overflow для метода cmp сравнения файлов.