Jeśli mam katalog zawierający niektóre pliki, których nazwy zawierają spacje, np
$ ls -1 dir1
file 1
file 2
file 3
Mogę z powodzeniem skopiować wszystkie z nich do innego katalogu, takiego jak ten:
$ find dir1 -mindepth 1 -exec cp -t dir2 {} +
Jednak dane wyjściowe find dir1 -mindepth 1
zawierają spacje bez znaku ucieczki:
$ find dir1 mindepth 1
dir1/file 1
dir1/file 3
dir1/file 3
Jeśli użyję print0
zamiast print
, dane wyjściowe nadal zawierają spacje bez znaczenia:
$ find dir1 mindepth 1 -print0
dir1/file 1dir1/file 2dir1/file 3
Aby ręcznie skopiować te pliki za pomocą cp
, musiałbym uciec od spacji; ale wydaje się, że nie jest to konieczne, gdy cp
pochodzą narzędzia find
, bez względu na to, czy używam polecenia, +
czy \;
na jego końcu.
Jaki jest tego powód?
find..exec
potrafi samodzielnie radzić sobie z dziwnymi nazwami plików.