$(...)中間有空白的問題 - Linux

Table of Contents

我用find找了一些檔案,之後要丟給其他指令,譬如用ls -ld要看看權限,
但是檔名中有空白:
.
./olympus
./olympus/40X mediumV.jpg
./olympus/Rtest
./olympus/Rtest/ca.crt
./olympus/Rca.crt
./olympus/40X medium.jpg
./ELISA M2e
./ELISA M2e/CTEST
./ELISA M2e/CTEST/ca.crt
./ELISA M2e/Cca.crt
./LEICA
./LEICA/CRca.crt
./LEICA/ERca.crt
./LEICA/_CACHE_001_
./Rca.crt

如果用
ls -ld $(find . )
ls: 無法存取 ./olympus/40X: 沒有此一檔案或目錄
ls: 無法存取 mediumV.jpg: 沒有此一檔案或目錄
ls: 無法存取 ./olympus/40X: 沒有此一檔案或目錄
ls: 無法存取 medium.jpg: 沒有此一檔案或目錄
ls: 無法存取 ./ELISA: 沒有此一檔案或目錄
ls: 無法存取 M2e: 沒有此一檔案或目錄
ls: 無法存取 ./ELISA: 沒有此一檔案或目錄
ls: 無法存取 M2e/CTEST: 沒有此一檔案或目錄
ls: 無法存取 ./ELISA: 沒有此一檔案或目錄
ls: 無法存取 M2e/CTEST/ca.crt: 沒有此一檔案或目錄
ls: 無法存取 ./ELISA: 沒有此一檔案或目錄
ls: 無法存取 M2e/Cca.crt: 沒有此一檔案或目錄
........後面就是正常的ls。

如果用""把$()包起來
ls -l "$(find . )"

ls: 無法存取 .
./olympus
./olympus/40X mediumV.jpg
./olympus/Rtest
./olympus/Rtest/ca.crt
./olympus/Rca.crt
./olympus/40X medium.jpg
./ELISA M2e
./ELISA M2e/CTEST
./ELISA M2e/CTEST/ca.crt
./ELISA M2e/Cca.crt
./LEICA
./LEICA/CRca.crt
./LEICA/ERca.crt
./LEICA/_CACHE_001_
./Rca.crt: 沒有此一檔案或目錄
連ls的功能都不見了。
請問我應該怎麼把有空白檔名的檔案正確傳給ls?

--
起初,他們追殺共產主義者,我沒有說話,因為我不是共產主義者;
接著,他們追殺猶太人,我沒有說話,因為我不是猶太人;
後來,他們追殺工會成員,我沒有說話,因為我不是工會成員;
此後,他們追殺天主教徒,我沒有說話,因為我是新教教徒;
最後,他們奔我而來,卻再也沒有人站起來為我說話了。
《First They Came(他們首次來時)》,Martin Niemoller牧師(1892-1984)

--

All Comments

Jack avatarJack2013-10-21
可以用雙引號括起來 像這樣 "$(xxx)"
Eartha avatarEartha2013-10-23
等下 為什麼你的不行
Wallis avatarWallis2013-10-24
要不然這樣 find ... -exec ls -l "{}"
Frederic avatarFrederic2013-10-27
只是要看檔案屬性644或rw-r--r--嗎? find本身就print的出來
Kyle avatarKyle2013-10-29
find . -printf '%u:%g %m %TY%Tm%Td_%TH%TM%TS %p\n'
%m→644 而 %M→rw-r--r--
Quanna avatarQuanna2013-11-03
不用那麼麻煩吧 find . -ls 就可以了
Freda avatarFreda2013-11-05
檔案的空白字元會加上跳脫符號 manpage要看
Susan avatarSusan2013-11-08
find的manpage好長XD (筆記…)
Connor avatarConnor2013-11-08
可以直接跳到標題UNUSUAL FILENAMES 這問題find早考慮了
Eden avatarEden2013-11-09
感謝各位,各位說的方法確實在ls都可行,甚至我原本還想和
Dora avatarDora2013-11-14
rm結合的,用-delete也可以搞定,但我不確定這些方法能否在
Adele avatarAdele2013-11-17
其他指令也成立,find能像原本一樣只輸出檔名,但有跳脫嗎?
Candice avatarCandice2013-11-18
嗚蛙...-print0怎麼擠成一團啊?
Sierra Rose avatarSierra Rose2013-11-21
print0是null-terminated strings,要下一個程式也支援這樣傳
檔名
Lily avatarLily2013-11-22
用null-terminate是因為null和/在大多數的檔案系統中是唯一不
出現在正常檔名中的檔案
Ingrid avatarIngrid2013-11-27
我比較喜歡 find ./ -type f -print0 | xargs -0 ls -l