Это работает для меня в Bash 4.2.46, он перемещает все файлы и папки, включая скрытые файлы и папки, в другой каталог
mv /sourcedir/{,.[^.]}* /destdir/
Обратите внимание, что . [^.] * означает все скрытые файлы, кроме . и..
Есть замечательная небольшая программа под названием fdupes, которая может помочь с этим - просто будьте осторожны, вы можете настроить ее на удаление всех дубликатов, а также других забавные вещи.
Я так много не тестировал, но пока это решение fdupes:
#!/usr/bin/env python
# Load a list of files in dir1, dir2,
# and a list of dupes provided by fdupes,
# and produce a list of files that aren't duplicated.
#
# find dir1 -type f > dir1.txt
# find dir2 -type f > dir2.txt
# fdupes dir1 dir2 -1 > dupes.txt
import sys
# print sys.argv
dir1_file = sys.argv[1]
dir2_file = sys.argv[2]
dupes_file = sys.argv[3]
dir1 = {}
with open(dir1_file) as f:
for line in f:
dir1[line.strip()] = True
dir2 = {}
with open(dir2_file) as f:
for line in f:
dir2[line.strip()] = True
dupes = {}
with open(dupes_file) as f:
for line in f:
(dir1_dupe, dir2_dupe) = line.split()
rv1 = dir1.pop(dir1_dupe, None)
rv2 = dir2.pop(dir2_dupe, None)
# print "non dupes:"
for key in dir1.keys():
print key
for key in dir2.keys():
print key