2013-08-16 44 views
1

我有一堆文件夾我想查找並將組更改爲目錄名稱。將目錄組設置爲目錄名稱

/SchoolA/ 
/SchoolB/ 
...... 
/SchoolZZZ/ 

我想不出它 - 但想是這樣的:

find . -type d -exec chgrp {} {} \; 

我得到的非法團體的名字,因爲它包括./該組。總之,以消除./

需要被類似

find . -type d -exec chgrp NODOTSLASH({}) {} \; 

* 編輯 *

我與以下職位的幫助下接近 - 但它仍然打印「 「。目錄。我該如何擺脫?

find . \(! -path '^.*' \) -type d -maxdepth 1 | sed -e 's/\.\///g' | awk '{print "\x22"$0"\x22","\x22"$0"\x22"}' 

回答

1
find . -type d | sed -e 's/\.\///g' | awk '{print $1, $1}' | xargs chgrp 

的更自組織的方法,以避免點.

find . -type d | sed -e 's/\.\///g' -e 's/\./avoid/g' | grep -v avoid | awk '{print $1"\t"$1}' | xargs chgrp 

上述內容也適用這兩個詞之間標籤空間。

+0

這非常接近 - 但是,空間(我沒有指定會在那裏)無法正常工作。但是 - 我修改了一些以嘗試獲得正確的結果 - 但仍不完全正確。感謝您的幫助到目前爲止!查看原始帖子,瞭解我如何修改。再次感謝! – user1453561

+0

添加更多信息給我的答案...這應該解決'點'問題。我已經在我的Mac上測試過它,它似乎正在工作... – iamauser

+0

很好 - 固定了。問題。我還使用了$ 0而不是$ 1,並將它用引號括起來作爲我已經有空格的組/文件夾名稱。謝謝你的幫助! – user1453561

0

使用while循環帶格式:

find . -type d -printf '%f\t%p\n' | while IFS=$'\t' read A B; do chgrp "$A" "$B"; done 
+0

我似乎無法得到這個在我的Mac上工作 - 說-printf:未知的主要或運營商。 – user1453561