Поиск дубликатов имен файлов в иерархии папок?

У меня есть папка с именем img, эта папка имеет много уровней подпапок, все из которых содержат изображения. Я буду импортировать их в сервер изображений.

Обычно изображения (или любые файлы) могут иметь одно и то же имя, если они находятся в другом пути к каталогу или имеют другое расширение. Однако импортируемый ими сервер изображений требует, чтобы все имена изображений были уникальными (даже если расширения отличаются друг от друга).

Например, изображения background.png и background.gif не будут разрешены, потому что, хотя у них разные расширения, они все равно имеют одинаковое имя файла.

Так что мне интересно, могу ли я сделать рекурсивный поиск в папке img, чтобы найти список файлов, которые имеют одно и то же имя (исключая расширение).

Есть ли команда, которая может это сделать?

22
задан 13 June 2011 в 20:28

51 ответ

FSlint - это универсальный дубликат, который включает в себя функцию для поиска повторяющихся имен:

Пакет FSlint для Ubuntu подчеркивает графический интерфейс, но, как объясняется в [d1 ] FSlint интерфейс командной строки доступен через программы в /usr/share/fslint/fslint/. Используйте параметр --help для документации, например :.........d6]

$ /usr/share/fslint/fslint/fslint --help
File system lint.
A collection of utilities to find lint on a filesystem.
To get more info on each utility run 'util --help'.

findup -- find DUPlicate files
findnl -- find Name Lint (problems with filenames)
findu8 -- find filenames with invalid utf8 encoding
findbl -- find Bad Links (various problems with symlinks)
findsn -- find Same Name (problems with clashing names)
finded -- find Empty Directories
findid -- find files with dead user IDs
findns -- find Non Stripped executables
findrs -- find Redundant Whitespace in files
findtf -- find Temporary Files
findul -- find possibly Unused Libraries
zipdir -- Reclaim wasted space in ext2 directory entries
$ /usr/share/fslint/fslint/findsn --help
find (files) with duplicate or conflicting names.
Usage: findsn [-A -c -C] [[-r] [-f] paths(s) ...]

If no arguments are supplied the $PATH is searched for any redundant
or conflicting files.

-A reports all aliases (soft and hard links) to files.
If no path(s) specified then the $PATH is searched.

If only path(s) specified then they are checked for duplicate named
files. You can qualify this with -C to ignore case in this search.
Qualifying with -c is more restictive as only files (or directories)
in the same directory whose names differ only in case are reported.
I.E. -c will flag files & directories that will conflict if transfered
to a case insensitive file system. Note if -c or -C specified and
no path(s) specifed the current directory is assumed.

Пример использования:

$ /usr/share/fslint/fslint/findsn /usr/share/icons/ > icons-with-duplicate-names.txt
$ head icons-with-duplicate-names.txt 
-rw-r--r-- 1 root root    683 2011-04-15 10:31 Humanity-Dark/AUTHORS
-rw-r--r-- 1 root root    683 2011-04-15 10:31 Humanity/AUTHORS
-rw-r--r-- 1 root root  17992 2011-04-15 10:31 Humanity-Dark/COPYING
-rw-r--r-- 1 root root  17992 2011-04-15 10:31 Humanity/COPYING
-rw-r--r-- 1 root root   4776 2011-03-29 08:57 Faenza/apps/16/DC++.xpm
-rw-r--r-- 1 root root   3816 2011-03-29 08:57 Faenza/apps/22/DC++.xpm
-rw-r--r-- 1 root root   4008 2011-03-29 08:57 Faenza/apps/24/DC++.xpm
-rw-r--r-- 1 root root   4456 2011-03-29 08:57 Faenza/apps/32/DC++.xpm
-rw-r--r-- 1 root root   7336 2011-03-29 08:57 Faenza/apps/48/DC++.xpm
-rw-r--r-- 1 root root    918 2011-03-29 09:03 Faenza/apps/16/Thunar.png
15
ответ дан 25 May 2018 в 20:21
  • 1
    Спасибо за рекомендацию, знаете ли вы, может ли FSlint использоваться в командной строке? – JD Isaacks 14 June 2011 в 00:35
  • 2
    @John Я обновил ответ, чтобы объяснить CLI FSlint. – ændrük 14 June 2011 в 00:53
  • 3
    Спасибо, что сработало. Некоторые из результатов в фиолетовом цвете, а некоторые - зеленым. Знаете ли вы, что означают разные цвета? – JD Isaacks 14 June 2011 в 18:13
  • 4
    @John Похоже, FSlint использует ls -l для форматирования своего вывода. Этот вопрос должен объяснить, что означают цвета. – ændrük 14 June 2011 в 21:46
  • 5
    FSlint имеет много зависимостей. – Navin 30 November 2015 в 21:17

FSlint - это универсальный дубликат, который включает в себя функцию для поиска повторяющихся имен:

Пакет FSlint для Ubuntu подчеркивает графический интерфейс, но, как объясняется в FSlint интерфейс командной строки доступен через программы в /usr/share/fslint/fslint/. Используйте параметр --help для документации, например :.........d6] $ /usr/share/fslint/fslint/fslint --help File system lint. A collection of utilities to find lint on a filesystem. To get more info on each utility run 'util --help'. findup -- find DUPlicate files findnl -- find Name Lint (problems with filenames) findu8 -- find filenames with invalid utf8 encoding findbl -- find Bad Links (various problems with symlinks) findsn -- find Same Name (problems with clashing names) finded -- find Empty Directories findid -- find files with dead user IDs findns -- find Non Stripped executables findrs -- find Redundant Whitespace in files findtf -- find Temporary Files findul -- find possibly Unused Libraries zipdir -- Reclaim wasted space in ext2 directory entries $ /usr/share/fslint/fslint/findsn --help find (files) with duplicate or conflicting names. Usage: findsn [-A -c -C] [[-r] [-f] paths(s) ...] If no arguments are supplied the $PATH is searched for any redundant or conflicting files. -A reports all aliases (soft and hard links) to files. If no path(s) specified then the $PATH is searched. If only path(s) specified then they are checked for duplicate named files. You can qualify this with -C to ignore case in this search. Qualifying with -c is more restictive as only files (or directories) in the same directory whose names differ only in case are reported. I.E. -c will flag files & directories that will conflict if transfered to a case insensitive file system. Note if -c or -C specified and no path(s) specifed the current directory is assumed.

Пример использования:

$ /usr/share/fslint/fslint/findsn /usr/share/icons/ > icons-with-duplicate-names.txt $ head icons-with-duplicate-names.txt -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity-Dark/AUTHORS -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity/AUTHORS -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity-Dark/COPYING -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity/COPYING -rw-r--r-- 1 root root 4776 2011-03-29 08:57 Faenza/apps/16/DC++.xpm -rw-r--r-- 1 root root 3816 2011-03-29 08:57 Faenza/apps/22/DC++.xpm -rw-r--r-- 1 root root 4008 2011-03-29 08:57 Faenza/apps/24/DC++.xpm -rw-r--r-- 1 root root 4456 2011-03-29 08:57 Faenza/apps/32/DC++.xpm -rw-r--r-- 1 root root 7336 2011-03-29 08:57 Faenza/apps/48/DC++.xpm -rw-r--r-- 1 root root 918 2011-03-29 09:03 Faenza/apps/16/Thunar.png
15
ответ дан 25 July 2018 в 21:44

FSlint - это универсальный дубликат, который включает в себя функцию для поиска повторяющихся имен:

Пакет FSlint для Ubuntu подчеркивает графический интерфейс, но, как объясняется в FSlint интерфейс командной строки доступен через программы в /usr/share/fslint/fslint/. Используйте параметр --help для документации, например :.........d6] $ /usr/share/fslint/fslint/fslint --help File system lint. A collection of utilities to find lint on a filesystem. To get more info on each utility run 'util --help'. findup -- find DUPlicate files findnl -- find Name Lint (problems with filenames) findu8 -- find filenames with invalid utf8 encoding findbl -- find Bad Links (various problems with symlinks) findsn -- find Same Name (problems with clashing names) finded -- find Empty Directories findid -- find files with dead user IDs findns -- find Non Stripped executables findrs -- find Redundant Whitespace in files findtf -- find Temporary Files findul -- find possibly Unused Libraries zipdir -- Reclaim wasted space in ext2 directory entries $ /usr/share/fslint/fslint/findsn --help find (files) with duplicate or conflicting names. Usage: findsn [-A -c -C] [[-r] [-f] paths(s) ...] If no arguments are supplied the $PATH is searched for any redundant or conflicting files. -A reports all aliases (soft and hard links) to files. If no path(s) specified then the $PATH is searched. If only path(s) specified then they are checked for duplicate named files. You can qualify this with -C to ignore case in this search. Qualifying with -c is more restictive as only files (or directories) in the same directory whose names differ only in case are reported. I.E. -c will flag files & directories that will conflict if transfered to a case insensitive file system. Note if -c or -C specified and no path(s) specifed the current directory is assumed.

Пример использования:

$ /usr/share/fslint/fslint/findsn /usr/share/icons/ > icons-with-duplicate-names.txt $ head icons-with-duplicate-names.txt -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity-Dark/AUTHORS -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity/AUTHORS -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity-Dark/COPYING -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity/COPYING -rw-r--r-- 1 root root 4776 2011-03-29 08:57 Faenza/apps/16/DC++.xpm -rw-r--r-- 1 root root 3816 2011-03-29 08:57 Faenza/apps/22/DC++.xpm -rw-r--r-- 1 root root 4008 2011-03-29 08:57 Faenza/apps/24/DC++.xpm -rw-r--r-- 1 root root 4456 2011-03-29 08:57 Faenza/apps/32/DC++.xpm -rw-r--r-- 1 root root 7336 2011-03-29 08:57 Faenza/apps/48/DC++.xpm -rw-r--r-- 1 root root 918 2011-03-29 09:03 Faenza/apps/16/Thunar.png
15
ответ дан 31 July 2018 в 10:34

FSlint - это универсальный дубликат, который включает в себя функцию для поиска повторяющихся имен:

Пакет FSlint для Ubuntu подчеркивает графический интерфейс, но, как объясняется в FSlint интерфейс командной строки доступен через программы в /usr/share/fslint/fslint/. Используйте параметр --help для документации, например :.........d6] $ /usr/share/fslint/fslint/fslint --help File system lint. A collection of utilities to find lint on a filesystem. To get more info on each utility run 'util --help'. findup -- find DUPlicate files findnl -- find Name Lint (problems with filenames) findu8 -- find filenames with invalid utf8 encoding findbl -- find Bad Links (various problems with symlinks) findsn -- find Same Name (problems with clashing names) finded -- find Empty Directories findid -- find files with dead user IDs findns -- find Non Stripped executables findrs -- find Redundant Whitespace in files findtf -- find Temporary Files findul -- find possibly Unused Libraries zipdir -- Reclaim wasted space in ext2 directory entries $ /usr/share/fslint/fslint/findsn --help find (files) with duplicate or conflicting names. Usage: findsn [-A -c -C] [[-r] [-f] paths(s) ...] If no arguments are supplied the $PATH is searched for any redundant or conflicting files. -A reports all aliases (soft and hard links) to files. If no path(s) specified then the $PATH is searched. If only path(s) specified then they are checked for duplicate named files. You can qualify this with -C to ignore case in this search. Qualifying with -c is more restictive as only files (or directories) in the same directory whose names differ only in case are reported. I.E. -c will flag files & directories that will conflict if transfered to a case insensitive file system. Note if -c or -C specified and no path(s) specifed the current directory is assumed.

Пример использования:

$ /usr/share/fslint/fslint/findsn /usr/share/icons/ > icons-with-duplicate-names.txt $ head icons-with-duplicate-names.txt -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity-Dark/AUTHORS -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity/AUTHORS -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity-Dark/COPYING -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity/COPYING -rw-r--r-- 1 root root 4776 2011-03-29 08:57 Faenza/apps/16/DC++.xpm -rw-r--r-- 1 root root 3816 2011-03-29 08:57 Faenza/apps/22/DC++.xpm -rw-r--r-- 1 root root 4008 2011-03-29 08:57 Faenza/apps/24/DC++.xpm -rw-r--r-- 1 root root 4456 2011-03-29 08:57 Faenza/apps/32/DC++.xpm -rw-r--r-- 1 root root 7336 2011-03-29 08:57 Faenza/apps/48/DC++.xpm -rw-r--r-- 1 root root 918 2011-03-29 09:03 Faenza/apps/16/Thunar.png
15
ответ дан 31 July 2018 в 11:37

FSlint - это универсальный дубликат, который включает в себя функцию для поиска повторяющихся имен:

Пакет FSlint для Ubuntu подчеркивает графический интерфейс, но, как объясняется в FSlint интерфейс командной строки доступен через программы в /usr/share/fslint/fslint/. Используйте параметр --help для документации, например :.........d6] $ /usr/share/fslint/fslint/fslint --help File system lint. A collection of utilities to find lint on a filesystem. To get more info on each utility run 'util --help'. findup -- find DUPlicate files findnl -- find Name Lint (problems with filenames) findu8 -- find filenames with invalid utf8 encoding findbl -- find Bad Links (various problems with symlinks) findsn -- find Same Name (problems with clashing names) finded -- find Empty Directories findid -- find files with dead user IDs findns -- find Non Stripped executables findrs -- find Redundant Whitespace in files findtf -- find Temporary Files findul -- find possibly Unused Libraries zipdir -- Reclaim wasted space in ext2 directory entries $ /usr/share/fslint/fslint/findsn --help find (files) with duplicate or conflicting names. Usage: findsn [-A -c -C] [[-r] [-f] paths(s) ...] If no arguments are supplied the $PATH is searched for any redundant or conflicting files. -A reports all aliases (soft and hard links) to files. If no path(s) specified then the $PATH is searched. If only path(s) specified then they are checked for duplicate named files. You can qualify this with -C to ignore case in this search. Qualifying with -c is more restictive as only files (or directories) in the same directory whose names differ only in case are reported. I.E. -c will flag files & directories that will conflict if transfered to a case insensitive file system. Note if -c or -C specified and no path(s) specifed the current directory is assumed.

Пример использования:

$ /usr/share/fslint/fslint/findsn /usr/share/icons/ > icons-with-duplicate-names.txt $ head icons-with-duplicate-names.txt -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity-Dark/AUTHORS -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity/AUTHORS -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity-Dark/COPYING -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity/COPYING -rw-r--r-- 1 root root 4776 2011-03-29 08:57 Faenza/apps/16/DC++.xpm -rw-r--r-- 1 root root 3816 2011-03-29 08:57 Faenza/apps/22/DC++.xpm -rw-r--r-- 1 root root 4008 2011-03-29 08:57 Faenza/apps/24/DC++.xpm -rw-r--r-- 1 root root 4456 2011-03-29 08:57 Faenza/apps/32/DC++.xpm -rw-r--r-- 1 root root 7336 2011-03-29 08:57 Faenza/apps/48/DC++.xpm -rw-r--r-- 1 root root 918 2011-03-29 09:03 Faenza/apps/16/Thunar.png
15
ответ дан 2 August 2018 в 03:19

FSlint - это универсальный дубликат, который включает в себя функцию для поиска повторяющихся имен:

Пакет FSlint для Ubuntu подчеркивает графический интерфейс, но, как объясняется в FSlint интерфейс командной строки доступен через программы в /usr/share/fslint/fslint/. Используйте параметр --help для документации, например :.........d6] $ /usr/share/fslint/fslint/fslint --help File system lint. A collection of utilities to find lint on a filesystem. To get more info on each utility run 'util --help'. findup -- find DUPlicate files findnl -- find Name Lint (problems with filenames) findu8 -- find filenames with invalid utf8 encoding findbl -- find Bad Links (various problems with symlinks) findsn -- find Same Name (problems with clashing names) finded -- find Empty Directories findid -- find files with dead user IDs findns -- find Non Stripped executables findrs -- find Redundant Whitespace in files findtf -- find Temporary Files findul -- find possibly Unused Libraries zipdir -- Reclaim wasted space in ext2 directory entries $ /usr/share/fslint/fslint/findsn --help find (files) with duplicate or conflicting names. Usage: findsn [-A -c -C] [[-r] [-f] paths(s) ...] If no arguments are supplied the $PATH is searched for any redundant or conflicting files. -A reports all aliases (soft and hard links) to files. If no path(s) specified then the $PATH is searched. If only path(s) specified then they are checked for duplicate named files. You can qualify this with -C to ignore case in this search. Qualifying with -c is more restictive as only files (or directories) in the same directory whose names differ only in case are reported. I.E. -c will flag files & directories that will conflict if transfered to a case insensitive file system. Note if -c or -C specified and no path(s) specifed the current directory is assumed.

Пример использования:

$ /usr/share/fslint/fslint/findsn /usr/share/icons/ > icons-with-duplicate-names.txt $ head icons-with-duplicate-names.txt -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity-Dark/AUTHORS -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity/AUTHORS -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity-Dark/COPYING -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity/COPYING -rw-r--r-- 1 root root 4776 2011-03-29 08:57 Faenza/apps/16/DC++.xpm -rw-r--r-- 1 root root 3816 2011-03-29 08:57 Faenza/apps/22/DC++.xpm -rw-r--r-- 1 root root 4008 2011-03-29 08:57 Faenza/apps/24/DC++.xpm -rw-r--r-- 1 root root 4456 2011-03-29 08:57 Faenza/apps/32/DC++.xpm -rw-r--r-- 1 root root 7336 2011-03-29 08:57 Faenza/apps/48/DC++.xpm -rw-r--r-- 1 root root 918 2011-03-29 09:03 Faenza/apps/16/Thunar.png
15
ответ дан 4 August 2018 в 19:17

FSlint - это универсальный дубликат, который включает в себя функцию для поиска повторяющихся имен:

Пакет FSlint для Ubuntu подчеркивает графический интерфейс, но, как объясняется в FSlint интерфейс командной строки доступен через программы в /usr/share/fslint/fslint/. Используйте параметр --help для документации, например :.........d6] $ /usr/share/fslint/fslint/fslint --help File system lint. A collection of utilities to find lint on a filesystem. To get more info on each utility run 'util --help'. findup -- find DUPlicate files findnl -- find Name Lint (problems with filenames) findu8 -- find filenames with invalid utf8 encoding findbl -- find Bad Links (various problems with symlinks) findsn -- find Same Name (problems with clashing names) finded -- find Empty Directories findid -- find files with dead user IDs findns -- find Non Stripped executables findrs -- find Redundant Whitespace in files findtf -- find Temporary Files findul -- find possibly Unused Libraries zipdir -- Reclaim wasted space in ext2 directory entries $ /usr/share/fslint/fslint/findsn --help find (files) with duplicate or conflicting names. Usage: findsn [-A -c -C] [[-r] [-f] paths(s) ...] If no arguments are supplied the $PATH is searched for any redundant or conflicting files. -A reports all aliases (soft and hard links) to files. If no path(s) specified then the $PATH is searched. If only path(s) specified then they are checked for duplicate named files. You can qualify this with -C to ignore case in this search. Qualifying with -c is more restictive as only files (or directories) in the same directory whose names differ only in case are reported. I.E. -c will flag files & directories that will conflict if transfered to a case insensitive file system. Note if -c or -C specified and no path(s) specifed the current directory is assumed.

Пример использования:

$ /usr/share/fslint/fslint/findsn /usr/share/icons/ > icons-with-duplicate-names.txt $ head icons-with-duplicate-names.txt -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity-Dark/AUTHORS -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity/AUTHORS -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity-Dark/COPYING -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity/COPYING -rw-r--r-- 1 root root 4776 2011-03-29 08:57 Faenza/apps/16/DC++.xpm -rw-r--r-- 1 root root 3816 2011-03-29 08:57 Faenza/apps/22/DC++.xpm -rw-r--r-- 1 root root 4008 2011-03-29 08:57 Faenza/apps/24/DC++.xpm -rw-r--r-- 1 root root 4456 2011-03-29 08:57 Faenza/apps/32/DC++.xpm -rw-r--r-- 1 root root 7336 2011-03-29 08:57 Faenza/apps/48/DC++.xpm -rw-r--r-- 1 root root 918 2011-03-29 09:03 Faenza/apps/16/Thunar.png
15
ответ дан 6 August 2018 в 03:30

FSlint - это универсальный дубликат, который включает в себя функцию для поиска повторяющихся имен:

Пакет FSlint для Ubuntu подчеркивает графический интерфейс, но, как объясняется в FSlint интерфейс командной строки доступен через программы в /usr/share/fslint/fslint/. Используйте параметр --help для документации, например :.........d6] $ /usr/share/fslint/fslint/fslint --help File system lint. A collection of utilities to find lint on a filesystem. To get more info on each utility run 'util --help'. findup -- find DUPlicate files findnl -- find Name Lint (problems with filenames) findu8 -- find filenames with invalid utf8 encoding findbl -- find Bad Links (various problems with symlinks) findsn -- find Same Name (problems with clashing names) finded -- find Empty Directories findid -- find files with dead user IDs findns -- find Non Stripped executables findrs -- find Redundant Whitespace in files findtf -- find Temporary Files findul -- find possibly Unused Libraries zipdir -- Reclaim wasted space in ext2 directory entries $ /usr/share/fslint/fslint/findsn --help find (files) with duplicate or conflicting names. Usage: findsn [-A -c -C] [[-r] [-f] paths(s) ...] If no arguments are supplied the $PATH is searched for any redundant or conflicting files. -A reports all aliases (soft and hard links) to files. If no path(s) specified then the $PATH is searched. If only path(s) specified then they are checked for duplicate named files. You can qualify this with -C to ignore case in this search. Qualifying with -c is more restictive as only files (or directories) in the same directory whose names differ only in case are reported. I.E. -c will flag files & directories that will conflict if transfered to a case insensitive file system. Note if -c or -C specified and no path(s) specifed the current directory is assumed.

Пример использования:

$ /usr/share/fslint/fslint/findsn /usr/share/icons/ > icons-with-duplicate-names.txt $ head icons-with-duplicate-names.txt -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity-Dark/AUTHORS -rw-r--r-- 1 root root 683 2011-04-15 10:31 Humanity/AUTHORS -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity-Dark/COPYING -rw-r--r-- 1 root root 17992 2011-04-15 10:31 Humanity/COPYING -rw-r--r-- 1 root root 4776 2011-03-29 08:57 Faenza/apps/16/DC++.xpm -rw-r--r-- 1 root root 3816 2011-03-29 08:57 Faenza/apps/22/DC++.xpm -rw-r--r-- 1 root root 4008 2011-03-29 08:57 Faenza/apps/24/DC++.xpm -rw-r--r-- 1 root root 4456 2011-03-29 08:57 Faenza/apps/32/DC++.xpm -rw-r--r-- 1 root root 7336 2011-03-29 08:57 Faenza/apps/48/DC++.xpm -rw-r--r-- 1 root root 918 2011-03-29 09:03 Faenza/apps/16/Thunar.png
15
ответ дан 7 August 2018 в 21:17

FSlint - универсальный дубликат, который включает в себя функцию для поиска повторяющихся имен:

FSlint [!d7]

Пакет FSlint для Ubuntu подчеркивает графический интерфейс, но, как объясняется в FAQ FSLint , интерфейс командной строки доступен через программы в / usr / share / fslint / fslint / . Используйте параметр - help для документации, например :

  $ / usr / share / fslint / fslint / fslint --help Файловая система lint.  Набор утилит, которые можно найти в файловой системе.  Чтобы получить дополнительную информацию о каждой утилите, запустите 'util -help'.  findup - найти DUPlicate files findnl - найти имя Lint (проблемы с именами файлов) findu8 - найти имена файлов с недействительным кодированием utf8 findbl - найти плохие ссылки (различные проблемы с символическими ссылками) findn - find Same Name (проблемы с конфликтующими именами)  finded - find Empty Directories findid - найти файлы с мертвыми идентификаторами пользователей findns - find Non Stripped executables findrs - find Redundant Whitespace в файлах findtf - найти временные файлы findul - найти, возможно, неиспользуемые библиотеки zipdir - вернуть неиспользуемое пространство в  Записи каталога ext2 $ / usr / share / fslint / fslint / findn --help find (файлы) с повторяющимися или конфликтующими именами.  Использование: findn [-A -c-C] [[-r] [-f] paths (s) ...] Если аргументы не заданы, поиск $ PATH выполняется для любых избыточных или конфликтующих файлов.  -A сообщает все псевдонимы (мягкие и жесткие ссылки) в файлы.  Если ни один путь (ы) не указан, выполняется поиск $ PATH.  Если указан только указанный путь (ы), то они проверяются на дубликаты названных файлов.  Вы можете квалифицировать это с помощью -C, чтобы игнорировать случай в этом поиске.  Квалификация с помощью -c более рестриктивна, поскольку сообщаются только файлы (или каталоги) в том же каталоге, имена которых отличаются только в случае.  И.Е.  -c будет отмечать файлы & amp;  каталоги, которые будут конфликтовать, если будут перенесены в файловую систему, не учитывающую регистр.  Обратите внимание, что если указано значение -c или -C и не указан путь (ы), текущий каталог предполагается.   

Пример использования:

  $ / usr / share / fslint / fslint / находитn / usr / share / icons / & gt;  icons-with-duplicate-names.txt $ head icons-with-duplicate-names.txt -rw-r -r-- 1 корень root 683 2011-04-15 10:31 Человечество-Темный / АВТОР -rw-r  --r-- 1 корень root 683 2011-04-15 10:31 Человечество / АВТОРЫ -rw-r - r-- 1 корень root 17992 2011-04-15 10:31 Человечество-Темное / КОПИРОВАНИЕ -rw-r  --r-- 1 корень root 17992 2011-04-15 10:31 Человечество / КОПИРОВАНИЕ -rw-r - r-- 1 корень root 4776 2011-03-29 08:57 Faenza / apps / 16 / DC ++. xpm  -rw-r - r-- 1 корень root 3816 2011-03-29 08:57 Faenza / apps / 22 / DC ++. xpm -rw-r - r-- 1 корень root 4008 2011-03-29 08:  57 Faenza / apps / 24 / DC ++. Xpm -rw-r - r-- 1 корень root 4456 2011-03-29 08:57 Faenza / apps / 32 / DC ++. Xpm -rw-r-r-- 1  root root 7336 2011-03-29 08:57 Faenza / apps / 48 / DC ++. xpm -rw-r - r-- 1 корень root 918 2011-03-29 09:03 Faenza / apps / 16 / Thunar.png   
15
ответ дан 10 August 2018 в 09:36

FSlint - универсальный дубликат, который включает в себя функцию для поиска повторяющихся имен:

FSlint [!d7]

Пакет FSlint для Ubuntu подчеркивает графический интерфейс, но, как объясняется в FAQ FSLint , интерфейс командной строки доступен через программы в / usr / share / fslint / fslint / . Используйте параметр - help для документации, например :

  $ / usr / share / fslint / fslint / fslint --help Файловая система lint.  Набор утилит, которые можно найти в файловой системе.  Чтобы получить дополнительную информацию о каждой утилите, запустите 'util -help'.  findup - найти DUPlicate files findnl - найти имя Lint (проблемы с именами файлов) findu8 - найти имена файлов с недействительным кодированием utf8 findbl - найти плохие ссылки (различные проблемы с символическими ссылками) findn - find Same Name (проблемы с конфликтующими именами)  finded - find Empty Directories findid - найти файлы с мертвыми идентификаторами пользователей findns - find Non Stripped executables findrs - find Redundant Whitespace в файлах findtf - найти временные файлы findul - найти, возможно, неиспользуемые библиотеки zipdir - вернуть неиспользуемое пространство в  Записи каталога ext2 $ / usr / share / fslint / fslint / findn --help find (файлы) с повторяющимися или конфликтующими именами.  Использование: findn [-A -c-C] [[-r] [-f] paths (s) ...] Если аргументы не заданы, поиск $ PATH выполняется для любых избыточных или конфликтующих файлов.  -A сообщает все псевдонимы (мягкие и жесткие ссылки) в файлы.  Если ни один путь (ы) не указан, выполняется поиск $ PATH.  Если указан только указанный путь (ы), то они проверяются на дубликаты названных файлов.  Вы можете квалифицировать это с помощью -C, чтобы игнорировать случай в этом поиске.  Квалификация с помощью -c более рестриктивна, поскольку сообщаются только файлы (или каталоги) в том же каталоге, имена которых отличаются только в случае.  И.Е.  -c будет отмечать файлы & amp;  каталоги, которые будут конфликтовать, если будут перенесены в файловую систему, не учитывающую регистр.  Обратите внимание, что если указано значение -c или -C и не указан путь (ы), текущий каталог предполагается.   

Пример использования:

  $ / usr / share / fslint / fslint / находитn / usr / share / icons / & gt;  icons-with-duplicate-names.txt $ head icons-with-duplicate-names.txt -rw-r -r-- 1 корень root 683 2011-04-15 10:31 Человечество-Темный / АВТОР -rw-r  --r-- 1 корень root 683 2011-04-15 10:31 Человечество / АВТОРЫ -rw-r - r-- 1 корень root 17992 2011-04-15 10:31 Человечество-Темное / КОПИРОВАНИЕ -rw-r  --r-- 1 корень root 17992 2011-04-15 10:31 Человечество / КОПИРОВАНИЕ -rw-r - r-- 1 корень root 4776 2011-03-29 08:57 Faenza / apps / 16 / DC ++. xpm  -rw-r - r-- 1 корень root 3816 2011-03-29 08:57 Faenza / apps / 22 / DC ++. xpm -rw-r - r-- 1 корень root 4008 2011-03-29 08:  57 Faenza / apps / 24 / DC ++. Xpm -rw-r - r-- 1 корень root 4456 2011-03-29 08:57 Faenza / apps / 32 / DC ++. Xpm -rw-r-r-- 1  root root 7336 2011-03-29 08:57 Faenza / apps / 48 / DC ++. xpm -rw-r - r-- 1 корень root 918 2011-03-29 09:03 Faenza / apps / 16 / Thunar.png   
15
ответ дан 13 August 2018 в 15:46
  • 1
    Спасибо за рекомендацию, знаете ли вы, может ли FSlint использоваться в командной строке? – JD Isaacks 14 June 2011 в 00:35
  • 2
    @John Я обновил ответ, чтобы объяснить CLI FSlint. – ændrük 14 June 2011 в 00:53
  • 3
    Спасибо, что сработало. Некоторые из результатов в фиолетовом цвете, а некоторые - зеленым. Знаете ли вы, что означают разные цвета? – JD Isaacks 14 June 2011 в 18:13
  • 4
    @John Похоже, что FSlint использует ls -l для форматирования своего вывода. Этот вопрос должен объяснить, что означают цвета. – ændrük 14 June 2011 в 21:46
  • 5
    FSlint имеет лот зависимостей. – Navin 30 November 2015 в 21:17
find . -mindepth 1 -printf '%h %f\n' | sort -t ' ' -k 2,2 | uniq -f 1 --all-repeated=separate | tr ' ' '/'

Как говорится в комментарии, это также найдет папки. Вот команда ограничить его файлами:

find . -mindepth 1 -type f -printf '%p %f\n' | ...
24
ответ дан 25 May 2018 в 20:21
  • 1
    Это путь Linux. Однако это также соответствует папкам – glebm 17 October 2012 в 01:01
  • 2
    Обновлен ответ на исключение каталогов. Спасибо за ваш комментарий. – ojblass 13 October 2014 в 17:28
  • 3
    Я изменил решение так, чтобы он возвращал полный (относительный) путь для всех дубликатов. К сожалению, он предполагает, что имена путей не содержат пробелов, потому что uniq не предоставляет функции для выбора другого разделителя поля. – David Foerster 16 August 2017 в 22:39
  • 4
    @DavidFoerster, ваш rev 6 был улучшением, но в отношении вашего комментария там, с тех пор, когда sed устарел? Arcane? Конечно. Вышло из употребления? Не то чтобы я знал. (И я только что проверил.) – cp.engr 13 October 2017 в 17:43
  • 5
    @ cp.engr: sed не устарел. Это обращение стало устаревшим после очередной смены. – David Foerster 14 October 2017 в 01:29

Сохраните это в файле с именем duplicates.py

#!/usr/bin/env python

# Syntax: duplicates.py DIRECTORY

import os, sys

top = sys.argv[1]
d = {}

for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        fn = os.path.join(root, name)
        basename, extension = os.path.splitext(name)

        basename = basename.lower() # ignore case

        if basename in d:
            print(d[basename])
            print(fn)
        else:
            d[basename] = fn

Затем сделайте исполняемый файл:

chmod +x duplicates.py

Запустите, например. например:

./duplicates.py ~/images

Он должен выводить пары файлов, имеющих одинаковое базовое имя (1). Написанный на python, вы сможете изменить его.

5
ответ дан 25 May 2018 в 20:21

Я предполагаю, что вам нужно только увидеть эти «дубликаты», а затем обработать их вручную. Если это так, этот код bash4 должен делать то, что вы хотите, я думаю.

declare -A array=() dupes=()
while IFS= read -r -d '' file; do 
    base=${file##*/} base=${base%.*}
    if [[ ${array[$base]} ]]; then 
        dupes[$base]+=" $file"
    else
        array[$base]=$file
    fi
done < <(find /the/dir -type f -print0)

for key in "${!dupes[@]}"; do 
    echo "$key: ${array[$key]}${dupes[$key]}"
done

См. Http://mywiki.wooledge.org/BashGuide/Arrays#Associative_Arrays и / или руководство bash для получения справки по синтаксис ассоциативного массива.

3
ответ дан 25 May 2018 в 20:21
  • 1
    Как выполнить такую ​​команду в терминале? Это что-то мне нужно сначала сохранить в файл и выполнить файл? – JD Isaacks 14 June 2011 в 00:35
  • 2
    @John Isaacks Вы можете скопировать / вставить его в терминал, или вы можете поместить его в файл и запустить его как скрипт. Любой случай достигнет того же. – geirha 14 June 2011 в 01:21

Это bname:

#!/bin/bash
#
#  find for jpg/png/gif more files of same basename 
#
# echo "processing ($1) $2"
bname=$(basename "$1" .$2)
find -name "$bname.jpg" -or -name "$bname.png"

Сделайте его исполняемым:

chmod a+x bname 

Вызовите его:

for ext in jpg png jpeg gif tiff; do find -name "*.$ext" -exec ./bname "{}" $ext ";"  ; done

Pro:

Это простой и простой, поэтому расширяемый. Обрабатывает пробелы, вкладки, строки и файлы в именах файлов, afaik. (Предполагая, что в имени расширения нет такой вещи).

Con:

Это просто и просто, поэтому расширяемость.
1
ответ дан 25 May 2018 в 20:21

Сохраните это в файле с именем duplicates.py

#!/usr/bin/env python # Syntax: duplicates.py DIRECTORY import os, sys top = sys.argv[1] d = {} for root, dirs, files in os.walk(top, topdown=False): for name in files: fn = os.path.join(root, name) basename, extension = os.path.splitext(name) basename = basename.lower() # ignore case if basename in d: print(d[basename]) print(fn) else: d[basename] = fn

Затем сделайте исполняемый файл:

chmod +x duplicates.py

Запустите, например. например:

./duplicates.py ~/images

Он должен выводить пары файлов, имеющих одинаковое базовое имя (1). Написанный на python, вы сможете изменить его.

5
ответ дан 25 July 2018 в 21:44
find . -mindepth 1 -printf '%h %f\n' | sort -t ' ' -k 2,2 | uniq -f 1 --all-repeated=separate | tr ' ' '/'

Как говорится в комментарии, это также найдет папки. Вот команда ограничить его файлами:

find . -mindepth 1 -type f -printf '%p %f\n' | ...
26
ответ дан 25 July 2018 в 21:44
  • 1
    Это путь Linux. Однако это также соответствует папкам – glebm 17 October 2012 в 01:01
  • 2
    Обновлен ответ на исключение каталогов. Спасибо за ваш комментарий. – ojblass 13 October 2014 в 17:28
  • 3
    Я изменил решение так, чтобы он возвращал полный (относительный) путь для всех дубликатов. К сожалению, он предполагает, что имена путей не содержат пробелов, потому что uniq не предоставляет функции для выбора другого разделителя поля. – David Foerster 16 August 2017 в 22:39
  • 4
    @DavidFoerster, ваш rev 6 был улучшением, но в отношении вашего комментария там, с тех пор, когда sed устарел? Arcane? Конечно. Вышло из употребления? Не то чтобы я знал. (И я только что проверил.) – cp.engr 13 October 2017 в 17:43
  • 5
    @ cp.engr: sed не устарел. Это обращение стало устаревшим после очередной смены. – David Foerster 14 October 2017 в 01:29

Я предполагаю, что вам нужно только увидеть эти «дубликаты», а затем обработать их вручную. Если это так, этот код bash4 должен делать то, что вы хотите, я думаю.

declare -A array=() dupes=() while IFS= read -r -d '' file; do base=${file##*/} base=${base%.*} if [[ ${array[$base]} ]]; then dupes[$base]+=" $file" else array[$base]=$file fi done < <(find /the/dir -type f -print0) for key in "${!dupes[@]}"; do echo "$key: ${array[$key]}${dupes[$key]}" done

См. Http://mywiki.wooledge.org/BashGuide/Arrays#Associative_Arrays и / или руководство bash для получения справки по синтаксис ассоциативного массива.

3
ответ дан 25 July 2018 в 21:44
  • 1
    Как выполнить такую ​​команду в терминале? Это что-то мне нужно сначала сохранить в файл и выполнить файл? – JD Isaacks 14 June 2011 в 00:35
  • 2
    @John Isaacks Вы можете скопировать / вставить его в терминал, или вы можете поместить его в файл и запустить его как скрипт. Любой случай достигнет того же. – geirha 14 June 2011 в 01:21

Это bname:

#!/bin/bash # # find for jpg/png/gif more files of same basename # # echo "processing ($1) $2" bname=$(basename "$1" .$2) find -name "$bname.jpg" -or -name "$bname.png"

Сделайте его исполняемым:

chmod a+x bname

Вызовите его:

for ext in jpg png jpeg gif tiff; do find -name "*.$ext" -exec ./bname "{}" $ext ";" ; done

Pro:

Это простой и простой, поэтому расширяемый. Обрабатывает пробелы, вкладки, строки и файлы в именах файлов, afaik. (Предполагая, что в имени расширения нет такой вещи).

Con:

Это просто и просто, поэтому расширяемость.
1
ответ дан 25 July 2018 в 21:44

Сохраните это в файле с именем duplicates.py

#!/usr/bin/env python # Syntax: duplicates.py DIRECTORY import os, sys top = sys.argv[1] d = {} for root, dirs, files in os.walk(top, topdown=False): for name in files: fn = os.path.join(root, name) basename, extension = os.path.splitext(name) basename = basename.lower() # ignore case if basename in d: print(d[basename]) print(fn) else: d[basename] = fn

Затем сделайте исполняемый файл:

chmod +x duplicates.py

Запустите, например. например:

./duplicates.py ~/images

Он должен выводить пары файлов, имеющих одинаковое базовое имя (1). Написанный на python, вы сможете изменить его.

5
ответ дан 31 July 2018 в 10:34
find . -mindepth 1 -printf '%h %f\n' | sort -t ' ' -k 2,2 | uniq -f 1 --all-repeated=separate | tr ' ' '/'

Как говорится в комментарии, это также найдет папки. Вот команда ограничить его файлами:

find . -mindepth 1 -type f -printf '%p %f\n' | ...
26
ответ дан 31 July 2018 в 10:34
  • 1
    Это путь Linux. Однако это также соответствует папкам – glebm 17 October 2012 в 01:01
  • 2
    Обновлен ответ на исключение каталогов. Спасибо за ваш комментарий. – ojblass 13 October 2014 в 17:28
  • 3
    Я изменил решение так, чтобы он возвращал полный (относительный) путь для всех дубликатов. К сожалению, он предполагает, что имена путей не содержат пробелов, потому что uniq не предоставляет функции для выбора другого разделителя поля. – David Foerster 16 August 2017 в 22:39
  • 4
    @DavidFoerster, ваш rev 6 был улучшением, но в отношении вашего комментария там, с тех пор, когда sed устарел? Arcane? Конечно. Вышло из употребления? Не то чтобы я знал. (И я только что проверил.) – cp.engr 13 October 2017 в 17:43
  • 5
    @ cp.engr: sed не устарел. Это обращение стало устаревшим после очередной смены. – David Foerster 14 October 2017 в 01:29

Я предполагаю, что вам нужно только увидеть эти «дубликаты», а затем обработать их вручную. Если это так, этот код bash4 должен делать то, что вы хотите, я думаю.

declare -A array=() dupes=() while IFS= read -r -d '' file; do base=${file##*/} base=${base%.*} if [[ ${array[$base]} ]]; then dupes[$base]+=" $file" else array[$base]=$file fi done < <(find /the/dir -type f -print0) for key in "${!dupes[@]}"; do echo "$key: ${array[$key]}${dupes[$key]}" done

См. Http://mywiki.wooledge.org/BashGuide/Arrays#Associative_Arrays и / или руководство bash для получения справки по синтаксис ассоциативного массива.

3
ответ дан 31 July 2018 в 10:34
  • 1
    Как выполнить такую ​​команду в терминале? Это что-то мне нужно сначала сохранить в файл и выполнить файл? – JD Isaacks 14 June 2011 в 00:35
  • 2
    @John Isaacks Вы можете скопировать / вставить его в терминал, или вы можете поместить его в файл и запустить его как скрипт. Любой случай достигнет того же. – geirha 14 June 2011 в 01:21

Это bname:

#!/bin/bash # # find for jpg/png/gif more files of same basename # # echo "processing ($1) $2" bname=$(basename "$1" .$2) find -name "$bname.jpg" -or -name "$bname.png"

Сделайте его исполняемым:

chmod a+x bname

Вызовите его:

for ext in jpg png jpeg gif tiff; do find -name "*.$ext" -exec ./bname "{}" $ext ";" ; done

Pro:

Это простой и простой, поэтому расширяемый. Обрабатывает пробелы, вкладки, строки и файлы в именах файлов, afaik. (Предполагая, что в имени расширения нет такой вещи).

Con:

Это просто и просто, поэтому расширяемость.
1
ответ дан 31 July 2018 в 10:34

Сохраните это в файле с именем duplicates.py

#!/usr/bin/env python # Syntax: duplicates.py DIRECTORY import os, sys top = sys.argv[1] d = {} for root, dirs, files in os.walk(top, topdown=False): for name in files: fn = os.path.join(root, name) basename, extension = os.path.splitext(name) basename = basename.lower() # ignore case if basename in d: print(d[basename]) print(fn) else: d[basename] = fn

Затем сделайте исполняемый файл:

chmod +x duplicates.py

Запустите, например. например:

./duplicates.py ~/images

Он должен выводить пары файлов, имеющих одинаковое базовое имя (1). Написанный на python, вы сможете изменить его.

5
ответ дан 31 July 2018 в 11:37
find . -mindepth 1 -printf '%h %f\n' | sort -t ' ' -k 2,2 | uniq -f 1 --all-repeated=separate | tr ' ' '/'

Как говорится в комментарии, это также найдет папки. Вот команда ограничить его файлами:

find . -mindepth 1 -type f -printf '%p %f\n' | ...
26
ответ дан 31 July 2018 в 11:37
  • 1
    Это путь Linux. Однако это также соответствует папкам – glebm 17 October 2012 в 01:01
  • 2
    Обновлен ответ на исключение каталогов. Спасибо за ваш комментарий. – ojblass 13 October 2014 в 17:28
  • 3
    Я изменил решение так, чтобы он возвращал полный (относительный) путь для всех дубликатов. К сожалению, он предполагает, что имена путей не содержат пробелов, потому что uniq не предоставляет функции для выбора другого разделителя поля. – David Foerster 16 August 2017 в 22:39
  • 4
    @DavidFoerster, ваш rev 6 был улучшением, но в отношении вашего комментария там, с тех пор, когда sed устарел? Arcane? Конечно. Вышло из употребления? Не то чтобы я знал. (И я только что проверил.) – cp.engr 13 October 2017 в 17:43
  • 5
    @ cp.engr: sed не устарел. Это обращение стало устаревшим после очередной смены. – David Foerster 14 October 2017 в 01:29

Я предполагаю, что вам нужно только увидеть эти «дубликаты», а затем обработать их вручную. Если это так, этот код bash4 должен делать то, что вы хотите, я думаю.

declare -A array=() dupes=() while IFS= read -r -d '' file; do base=${file##*/} base=${base%.*} if [[ ${array[$base]} ]]; then dupes[$base]+=" $file" else array[$base]=$file fi done < <(find /the/dir -type f -print0) for key in "${!dupes[@]}"; do echo "$key: ${array[$key]}${dupes[$key]}" done

См. Http://mywiki.wooledge.org/BashGuide/Arrays#Associative_Arrays и / или руководство bash для получения справки по синтаксис ассоциативного массива.

3
ответ дан 31 July 2018 в 11:37
  • 1
    Как выполнить такую ​​команду в терминале? Это что-то мне нужно сначала сохранить в файл и выполнить файл? – JD Isaacks 14 June 2011 в 00:35
  • 2
    @John Isaacks Вы можете скопировать / вставить его в терминал, или вы можете поместить его в файл и запустить его как скрипт. Любой случай достигнет того же. – geirha 14 June 2011 в 01:21

Это bname:

#!/bin/bash # # find for jpg/png/gif more files of same basename # # echo "processing ($1) $2" bname=$(basename "$1" .$2) find -name "$bname.jpg" -or -name "$bname.png"

Сделайте его исполняемым:

chmod a+x bname

Вызовите его:

for ext in jpg png jpeg gif tiff; do find -name "*.$ext" -exec ./bname "{}" $ext ";" ; done

Pro:

Это простой и простой, поэтому расширяемый. Обрабатывает пробелы, вкладки, строки и файлы в именах файлов, afaik. (Предполагая, что в имени расширения нет такой вещи).

Con:

Это просто и просто, поэтому расширяемость.
1
ответ дан 31 July 2018 в 11:37

Сохраните это в файле с именем duplicates.py

#!/usr/bin/env python # Syntax: duplicates.py DIRECTORY import os, sys top = sys.argv[1] d = {} for root, dirs, files in os.walk(top, topdown=False): for name in files: fn = os.path.join(root, name) basename, extension = os.path.splitext(name) basename = basename.lower() # ignore case if basename in d: print(d[basename]) print(fn) else: d[basename] = fn

Затем сделайте исполняемый файл:

chmod +x duplicates.py

Запустите, например. например:

./duplicates.py ~/images

Он должен выводить пары файлов, имеющих одинаковое базовое имя (1). Написанный на python, вы сможете изменить его.

5
ответ дан 2 August 2018 в 03:19
find . -mindepth 1 -printf '%h %f\n' | sort -t ' ' -k 2,2 | uniq -f 1 --all-repeated=separate | tr ' ' '/'

Как говорится в комментарии, это также найдет папки. Вот команда ограничить его файлами:

find . -mindepth 1 -type f -printf '%p %f\n' | ...
26
ответ дан 2 August 2018 в 03:19
  • 1
    Это путь Linux. Однако это также соответствует папкам – glebm 17 October 2012 в 01:01
  • 2
    Обновлен ответ на исключение каталогов. Спасибо за ваш комментарий. – ojblass 13 October 2014 в 17:28
  • 3
    Я изменил решение так, чтобы он возвращал полный (относительный) путь для всех дубликатов. К сожалению, он предполагает, что имена путей не содержат пробелов, потому что uniq не предоставляет функции для выбора другого разделителя поля. – David Foerster 16 August 2017 в 22:39
  • 4
    @DavidFoerster, ваш rev 6 был улучшением, но в отношении вашего комментария там, с тех пор, когда sed устарел? Arcane? Конечно. Вышло из употребления? Не то чтобы я знал. (И я только что проверил.) – cp.engr 13 October 2017 в 17:43
  • 5
    @ cp.engr: sed не устарел. Это обращение стало устаревшим после очередной смены. – David Foerster 14 October 2017 в 01:29

Я предполагаю, что вам нужно только увидеть эти «дубликаты», а затем обработать их вручную. Если это так, этот код bash4 должен делать то, что вы хотите, я думаю.

declare -A array=() dupes=() while IFS= read -r -d '' file; do base=${file##*/} base=${base%.*} if [[ ${array[$base]} ]]; then dupes[$base]+=" $file" else array[$base]=$file fi done < <(find /the/dir -type f -print0) for key in "${!dupes[@]}"; do echo "$key: ${array[$key]}${dupes[$key]}" done

См. Http://mywiki.wooledge.org/BashGuide/Arrays#Associative_Arrays и / или руководство bash для получения справки по синтаксис ассоциативного массива.

3
ответ дан 2 August 2018 в 03:19
  • 1
    Как выполнить такую ​​команду в терминале? Это что-то мне нужно сначала сохранить в файл и выполнить файл? – JD Isaacks 14 June 2011 в 00:35
  • 2
    @John Isaacks Вы можете скопировать / вставить его в терминал, или вы можете поместить его в файл и запустить его как скрипт. Любой случай достигнет того же. – geirha 14 June 2011 в 01:21

Это bname:

#!/bin/bash # # find for jpg/png/gif more files of same basename # # echo "processing ($1) $2" bname=$(basename "$1" .$2) find -name "$bname.jpg" -or -name "$bname.png"

Сделайте его исполняемым:

chmod a+x bname

Вызовите его:

for ext in jpg png jpeg gif tiff; do find -name "*.$ext" -exec ./bname "{}" $ext ";" ; done

Pro:

Это простой и простой, поэтому расширяемый. Обрабатывает пробелы, вкладки, строки и файлы в именах файлов, afaik. (Предполагая, что в имени расширения нет такой вещи).

Con:

Это просто и просто, поэтому расширяемость.
1
ответ дан 2 August 2018 в 03:19