2015-08-14 109 views
0

問:我正在使用unix平臺上的腳本,我必須從現在起8個小時左右才能找出目錄中的所有文件。在unix文件名中查找帶有特殊字符的文件

我使用下面的命令來檢索文件,按上述條件:

find . name "*.dat" -mmin -480 

但也有其是具有特殊字符(雙問號)??「的文件名稱本身,而使用一些文件上面的命令,在其名稱文件,??,得到了分裂成兩個部分在兩行

的如:

file name : aabb??cc.dat 

上面的命令運行後,它的結果是這樣的:

$./aabb 

$cc.dat 

($這裏是UNIX命令提示符) 有人建議可以校正在上面的命令或處理此異常正確的方法。

+3

find不會分割文件名。顯示你的腳本的其餘部分。 –

+0

沒有「特殊字符」這樣的東西。只有字符。很多那些狂歡者。 – arkascha

+0

@MarcB我在這裏的目的不是分割文件。我想在完整文件名的目錄中搜索文件,但是這個文件(aabb ?? cc.dat)分裂成兩個名字,這對我來說是一個問題。 – avisingh05

回答

0

此命令將顯示find正在考慮這些文件只是和其他人一樣:

find . -name "*.dat" -mmin -480 -exec \ 
    ksh -c 'c=1 
      for file do 
       printf "file #%d is \"%s\"\n" $c "$file" 
       c=$((c+1)) 
      done ' sh {} + 

如果find正顯示出一些文件名中分成兩行,這只是因爲他們的名字有一個嵌入的新線。這很奇怪,但它們仍然是有效的文件名。

+0

您至少需要在''do''做文件做printf'之前使用分號。該腳本無法讀取,因爲它延伸數英里。 –

+0

@JonathanLeffler我的理解是根據POSIX for for循環語法,不需要這樣的分號。爲了便於閱讀,插入了換行符。 – jlliagre

+1

有趣。由於缺少'in'和一個參數列表(例如,沒有'$ @「;'中的文件),分號似乎並不必要,儘管它也沒有任何害處。我坐正確。 –