Powinna to załatwić następująca kombinacja:
find . -type f -exec mv --backup=numbered {} . \; &&
find . -maxdepth 1 -type d -exec rm -r {} +
Jak to działa?
find numer 1:
. <kropka> polecenie find przeszukuje przeszukuje bieżący folder;
-type f szuka tylko plików;
-exec […] dla każdego wyniku odpala polecenie (i wtedy dodajemyna końcu
{} [...] \
);mv --backup=numbered . \;
przenosi każdy wynik szukania do bieżącego katalogu, tworząc numerowaną kopię pliku, gdy powtarzają się nazwy.Idziemy do drugiej linii, find numer 2:
. <kropka> polecenie find przeszukuje przeszukuje bieżący folder;
-maxdepth 1 określa poziom zagłebienia w szukaniu, tutaj szuka tylko do pierwszego poziomu podfolderów;
-type d szuka tylko katalogów;
-exec […] dla wszystkich wyników odpala polecenie (i wtedy dodajemyna końcu
{} +
);rm –r {} + kasuje każdy wynik.
Przykładowo, powinno to działać tak:
user@debian ~/tmp % tree -a
.
├── 1
│ ├── file1
│ ├── file2
│ ├── file3
│ └── .hidden
├── 2
│ ├── file1
│ ├── file2
│ ├── file3
│ └── .hidden
└── 3
├── file1
├── file2
├── file3
└── .hidden
3 directories, 12 files
user@debian ~/tmp % find . -type f -exec mv --backup=numbered {} . \; && find . -type d -exec rm -r {} +
rm: refusing to remove "." or ".." directory: skipping "."
user@debian ~/tmp % tree -a
.
├── file1
├── file1.~1~
├── file1.~2~
├── file2
├── file2.~1~
├── file2.~2~
├── file3
├── file3.~1~
├── file3.~2~
├── .hidden
├── .hidden.~1~
└── .hidden.~2~
0 directories, 12 files
W sumie takie oprogramowanie jest bardzo przydatne w codziennej pracy. Ja również zastanawiam się nad przejściem na Linuxa. Jak czytałam w https://ceo.com.pl/red-hat-w-firmie-35173 to faktycznie ta dystrybucja jest całkiem fajna.
OdpowiedzUsuńJa raczej takich rozwiązań na co dzień nie potrzebuję, ale jestem przekonana, że warto jest korzystać z dobrego oprogramowania. W takiej sytuacji każdemu mogę polecić oprogramowanie od https://www.connecto.pl/ które moim zdaniem sprawdza się znakomicie.
OdpowiedzUsuń