Portál AbcLinuxu, 7. listopadu 2025 02:49
cd zdrojovaslozka/* cilovaslozka zkopíruji všechny soubory z jedne složky do druhé. Když do příkazu přidám parametr -i, tak bude potřeba každý soubor, který se stejně jmenuje, potvrdit, jestli ho chci přepsat. Zadáním y a entr se přepíše, zmáčknutím jen entr se nepřepíše. Když do příkazu použiju parametr -b, tak se to nebude na nic ptát a všechny soubory, které se jmunují stejně, přepíše, ale vyrobí k nim založní kopii původního. Jaký parametr mám ale použít, když chci, aby mi to všechny soubory se stejným jménem přepsalo automaticky bez zeptání a bez založní kopie původního? Zkoušel jsem ten příkaz zadat bez parametru, ale to nepomůže, funguje to, jako s parametrem -i.
alias | grep alias cp? Hádám, že to řekne alias cp=cp -i. Jo-li, pak ten alias odstraň z některého ze souborů
~/.bashrc, ~/.bash_profile, ~/.profile, /etc/profile, /etc/bash.bashrc
alias | grep alias cp mi řekne:
grep: cp: není souborem ani adresářem.
Žádné aliasy jsem zatím nevytvářel, takže bych je ani neměl mít.
alias | grep 'alias cp'
Alias můžeš mít nastaven už od výroby.
Takže za prvé to není cd, ale cp (z anglického copy). Za druhé jsi nám neřekl, zda chceš kopírovat rekursivně, tzn. kopírovat i případné podadresáře. Zkus si např. příkazem echo zdrojovaslozka/* vypsat, co by se kopírovalo a zjistíš, že v tom seznamu budou i podadresáře (pokud tedy tam nějaké byly). Myslím, že by ti mohlo pomoci:
cp --force --recursive zdrojovaslozka/ cilovaslozka
Jinak kolega nade mnou správně poznamenal s tím aliasem. V tom to možná bude.
Jinak "korektnější" zápis je:
/bin/cp --force --recursive zdrojovaslozka/ cilovaslozka
Pokud bys potřeboval skutečně zkopírovat jenom soubory, nikoli tedy podadresáře, tak se ozvi -- najdeme pro tebe "nejlepší" řešení.
cp, ale omylem jsem napsal cd a už to nejde přepsat.
yes | cp -i ....
Ale jinak si myslím, že řešení vašeho dotazu je přepínač -f (--force)cp --force --recursive zdrojovaslozka/* cilovaslozka nefungovalo to. Když jsem však vynechal tu hvězdičku, už to funguje lépe až na jednu věc: V cílové složce se mi objevily všechny soubory, ale vedle ních navíc nová složka, která se jmenuje stejně jak zdrojová, a v ni některé podruhé zkopírované soubory.
cp -f zdrojovaslozka/ cilovaslozka a to neudělalo nic, jenom odpovědělo:
cp: omitting directory `zdrojovaslozka`
cp -f zdrojovaslozka/* cilovaslozka a to už konečně funguje podle toho, jak jsem chtěl. Stejně tak funguje taky cp --force zdrojovaslozka/* cilovaslozka Takže hledaný parametr byl opravdu -f nebo --force.
Je dobře, že jste našel řešení. Jinak já jsem "zmlsaný" programem rsync, takže už ani "obyčejný" cp moc nepoužívám. A tak jsem poradil tak, jak jsem poradil.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.