2010-11-04 120 views

回答

7

這應該這樣做:

for f in *; do echo >> $f; echo $f >> $f; done 
  • 首先呼應了新線,然後回顯文件名。

  • >>說「追加在文件末尾」。

+0

這並不在文件名前添加請求換行符。 – MForster 2010-11-04 21:49:19

+0

更新了答案。 – aioobe 2010-11-04 21:51:21

+0

如果文件名包含\? 'printf'\ n%s \ n'「$ f」' – ephemient 2010-11-05 01:31:39

0

編輯:aioobe的答案已更新,顯示-e標誌,我沒有看到當我第一次回答這個問題。因此,我現在只是顯示一個例子,其中包括一個目錄,如何消除目錄名稱:

#!/bin/bash 
for fn in dir/* 
do 
    shortname=${fn/#*\//} 
    echo -e "\n$shortname" >> $fn 
done 

如果你想要的目錄名,取出shortname=${fn/#*\//}線和替換$短名稱與$回聲FN 。

0

xargs做循環:

# recursive, includes directory name 
find -type f -print0 | xargs -0 -I% bash -c 'echo -e "\n%" >> %' 

# non-recursive, doesn't include directory name 
find -maxdepth 1 -type f -exec basename {} \; | xargs -I% bash -c 'echo -e "\n%" >> %' 

# non-recursive, doesn't include directory name 
find -maxdepth 1 -type f -printf "%f\0" | xargs -0 -I% bash -c 'echo -e "\n%" >> %' 

# recursive, doesn't include directory name 
find -type f -print0 | xargs -0 -I% bash -c 'f=%; echo -e "\n${f##*/}" >> %' 
0

使用ex(或VIM)的另一種方法:

ex -c 'args **/*' -c 'set hidden' -c 'argdo $put =bufname(".")' -c 'wqa'