2014-04-02 48 views
0

我試圖把的find $PWD輸出(所有的文件和目錄在當前目錄和子目錄)在一列...現在它打印出所有的一行。
一個例子:功放輸出在一列

/Users/blah /Users/blah/blah /Users/blah/blah/blah.txt 

我需要它是

/Users/blah 
/Users/blah/blah 
/Users/blah/blah/blah.txt 

謝謝!

+2

嘗試@ brotherofken的答案..在我的計算機中,「find $ PWD」已經給出了「per-line」輸出,儘管如此.. –

+1

爲什麼要做'find $ PWD'而不是'find'(目錄參數是可選的如果沒有輸入,應該='$ PWD')。幾件事情會幫助你找出爲什麼會發生這種情況'find --version'和'type find'(例如'-print0'選項硬件集) – BroSlow

+0

我們需要更多的上下文。沒有人看到這種行爲,這不僅僅是巧合, 'find'不應該像你所描述的那樣運作。 –

回答

1

我的精神力量告訴我,你在一個變量捕獲此數據或以其他方式將其通過回聲:

var=$(find $PWD) 
echo $var 
--or-- 
echo $(find $PWD) 

這將導致您看到的效果因爲你忽略了引用。你應該總是雙引號幾乎所有的變量和命令替換:

var=$(find "$PWD") 
echo "$var" 
--or-- 
echo "$(find "$PWD")" 

這將打印數據就像是捕捉,用換行符代替空格。

+0

+1用於製造智能的猜測有關實際問題,而不是暗示的在於,根據該POSIX規範,不應該存在問題的修復(因此是不太可能實際存在OP的系統上)。 –

1

在我的電腦find $PWD給每行一個文件也一樣,Yohanes Khosiawan說。

但是儘量從man find

find $PWD -printf "%p\n" 

提取物,迫使它:使用ls

ls -1 

-printf format 
     print format on the standard output, interpreting '\' escapes and '%' directives. Field 
     widths and precisions can be specified as with the 'printf' C function. 

相同相似變薄從幫助摘錄:

-1 -- (The numeric digit "one") 
     Force output to be one entry per line. 
     This is the default when output is not to a terminal.