Mam ogromne drzewo plików. Niektóre pliki mają taką samą nazwę, ale w innym przypadku, na przykład, some_code.c
i Some_Code.c
.
Więc kiedy próbuję skopiować go do systemu plików NTFS / FAT, pyta mnie, czy chcę go zastąpić, czy pominąć.
Czy istnieje sposób na automatyczną zmianę nazw takich plików, na przykład poprzez dodanie (1)
do nazwy pliku konfliktu (tak jak robi to system Windows 7)?
sudo fdisk -l /dev/sda
) i zrobiłemtouch foo; touch Foo
i zakończyłem z 2 plikamifoo
iFoo
. Ale nie jestem ciekawy, czy mogę zrestartować system Windows i sprawdzić, jak tam wyglądają. Czy to tylko problem z FAT? Ach - mam pamięć USB z FAT i mogę utworzyć system FAT w pliku, ... - chwileczkę. :)Odpowiedzi:
Wiele narzędzi GNU, takie jak
cp
,mv
itar
obsługuje tworzenia kopii zapasowych plików, gdy istnieje cel. Oznacza to, że podczas kopiowaniafoo
dobar
, jeśli istnieje już plik o nazwiebar
, istniejącybar
zostanie przemianowany, a po skopiowaniubar
będzie zawierał zawartośćfoo
. Domyślniebar
nazwa zostaje zmieniona nabar~
, ale zachowanie można zmodyfikować:Istnieją inne warianty, takie jak tworzenie numerowanych kopii zapasowych tylko wtedy, gdy już istnieje. Więcej informacji znajduje się w instrukcji Coreutils .
źródło
brew install coreutils
a następnie użyj poleceniagcp
zamiast tego.próbowałem
znaleźć potencjalnych kandydatów i pojawiła się mcopy.
pokazuje obiecującą opcję, czy
-D clash-option
to nie jest fajne? Ale nie tak fajnie - nie jest to opisane. Ale jest kilka wskazówek do mtools.dvi, które przeszukałem w moim systemie, bez powodzenia, i za pośrednictwem google, bez powodzenia, ale potem, z google, szukałem bezpośredniomcopy clash-option
i znalazłem tę stronę .Zrobiłem krótki test
do testów dla autorename i targetdir
a
- zamiast automatycznego nazwania poprosił mnie o to, aby każdy plik zignorował lub zastąpił ten głupi s ...Moja wersja jest,
mtools-4.0.10
a strona pomocy pochodzi z 1996 r. - 15 lat. Czy w międzyczasie powinniśmy naprawdę stracić niektóre funkcje?Dzieliłbym pracę na dwa etapy:
find
i uruchom ten skrypt dla każdego pliku, który chcesz skopiować.Czy powinniśmy pomóc w takim podejściu? :)
Oto skrypt do automatycznego zmieniania nazw plików:
i to jest moje wywołanie testowe:
Uwaga: -maxdepth, -name i -type są używane do radykalnego ograniczenia liczby plików, których dotyczy problem. Nie testowałem skryptu pod kątem głębszych struktur plików ani spacji w nazwach plików i innych funkowych znakach, takich jak linefeed, pagefeed i tak dalej.
Użyłem .1, ponieważ nie sprawia problemów w większości poleceń, podczas gdy (i a) często wymagają maskowania.
źródło
Przynajmniej nie z GNU
cp
.Zdecydowanie zaleca się, aby nie mieć zduplikowanych nazw plików (ignorowanie wielkości liter), ponieważ spowodują one świat bólu. Znajdź listę takich duplikatów za pomocą
Następnie ręcznie zmień nazwę jednego z plików dla każdego wiersza, jeśli dane wyjściowe. Staraj się unikać tworzenia duplikatów w przyszłości.
źródło