Произведите операторы перемещения и оцените их в одном выстреле:
ls -d /home/*/tmp | sed 's/.*t/mv &mp &e/' | sh -xv
Это работает для основных имён файлов, но не будет работать для файлов с возвратом каретки и, возможно, для нескольких других случаев с краями.
FilesNoPath=$(find . -printf "%f\n")
FilesWithPath=$(find .)
oldIFS=$IFS
IFS=$'\n'
for filename in $FilesNoPath;
do
Matches=$(echo "$FilesWithPath" | grep -i "/$filename$")
if [ $(echo "$Matches" | wc -l) -gt 1 ]
then
echo Found matches:
echo "$Matches"
FilesWithPath=$(echo "$FilesWithPath" | grep -vi "/$filename$")
fi
done
IFS=$oldIFS
Вы можете заменить .
в двух командах поиска с помощью /path/to/your/files
, если вы хотите, чтобы на выходе был показан полный путь и/или вы не хотите выполнять его из родительского каталога соответствующих файлов.
find . -printf "%p %f\n" | sort -f -k2 | uniq -Di -f1
Укажите ваш выбор исходного каталога для Найти
Если вы не хотите начать с .
.
Добавить -Type f
Если вы хотите просто файл имена.
Найти
Команда создает список имен файлов (и каталогов), в порядке каталога (I.E., случайном порядке, насколько вы касаетесь). -PrintF "% p% f \ n"
печатает полный путь (относительно .
) и имя файла. Сортировка -F
недолго для сортировка - сортировка - сортировка
, т. Е. Он сортирует список файла в случае нечувствительности к регистру -K2
. второе поле в качестве ключа сортировки. UNIQ -DI -F1
не хватает Uniq --All-diepreted Case-case --skip-поля = 1
, то есть он показывает (все) строки вывода Из находятся
, которые происходят неоднократно, на основе случая нечувствительности к случаю сравнения второго поля и за пределы (т. Е. Имено то же самое (нечувствительное к регистру) файла). Это должно дать вам нужный вывод, за исключением каждую строку произойдет имя файла в конце. Если вы хотите избавиться от этого, труба в SED 'S /. * //'
.
Пара Gotchas:
Если у вас есть каталоги , чьи имена одинаковы, кроме случаев, И они содержат файлы, имена которых одинаковы, за исключением случаев, например,.,
Документы / design.doc
Документы / design.doc.
Тогда они будут перечислены.
Если у вас есть файлы (или каталоги), имена которых содержат пробелы, вкладки или новые линии, это сломается.