亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12345下一頁
最近訪問板塊 發(fā)新帖
查看: 13709 | 回復(fù): 41
打印 上一主題 下一主題

文件夾批量逐級授權(quán)問題的(已解決,感謝CUer: crisman,damofeixue,ivhb) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-07-13 15:33 |只看該作者 |倒序瀏覽
(問題已解決。

現(xiàn)有文件夾,目錄結(jié)構(gòu)如下:

/tmp/test
/tmp/test/1/1/1/1/1/1/1/1/1/1/1
/tmp/test/1/2/2/2/2/2/2//2/2/2/2
/tmp/test/2/1/1/1/1/1//1/1/1/1/1
/tmp/test/2/3/3/3/3/3/3/3/3/3/3/3
/tmp/test/3/4/4/4/4/4/4/4/4/4/4/4
/tmp/test/3/5/5/5/5/5/5/5/5/5/5/5

現(xiàn)要求寫一個shell程序,對如上目錄逐級授權(quán)(chmod 755) ,也就是說先進(jìn)test目錄,對1,2,3目錄授權(quán),然后再進(jìn)1的子目錄,對1,2授權(quán),以此類推,1級目錄授權(quán)完畢后,再進(jìn)2級目錄授權(quán)。一個分支授權(quán)完畢后進(jìn)入另外一個目錄分支授權(quán)。

ps : 因為每一級目錄下都有幾千萬的文件,我不需要對文件操作,只需要對文件夾操作,以減輕操作量。

目前,我只實現(xiàn)了授權(quán)完一個目錄分支,就退出來了,代碼如下:


  1. #!/bin/bash
  2. # site: Chinaunix  Author: echo52
  3. # name: chmodfile

  4. PATH=$PATH:/bin:/sbin:/usr/bin:/usr/local/bin

  5. DIRPATH1=`find $1 -maxdepth 1 -type d|sed '1d'`
  6. DIRNUM=1

  7. # 授權(quán) 初始 目錄
  8. chmod 755 $DIRPATH1
  9. #echo "$DIRPATH1"


  10. until  [ $DIRNUM = 0 ]
  11.   do
  12.    
  13.     for a in $DIRPATH1
  14.       do
  15.          A_DIRPATH=`echo $a`
  16.          
  17.          echo "授權(quán)路路徑  $A_DIRPATH"
  18.          chmod 755 $A_DIRPATH
  19.             
  20.          DIRPATH1=`find $A_DIRPATH -maxdepth 1 -type d|sed '1d'`
  21.          DIRNUM=`find $A_DIRPATH -maxdepth 1 -type d|sed '1d'|wc -l`
  22.       done
  23.    done

復(fù)制代碼


執(zhí)行結(jié)果如下:

  1. [root@test  tmp]# ./chmodfile ./
  2. 授權(quán)路路徑  ./test
  3. 授權(quán)路路徑  ./test/2
  4. 授權(quán)路路徑  ./test/1
  5. 授權(quán)路路徑  ./test/3
  6. 授權(quán)路路徑  ./test/3/4
  7. 授權(quán)路路徑  ./test/3/5
  8. 授權(quán)路路徑  ./test/3/5/5
  9. 授權(quán)路路徑  ./test/3/5/5/5
  10. 授權(quán)路路徑  ./test/3/5/5/5/5
  11. 授權(quán)路路徑  ./test/3/5/5/5/5/5
  12. 授權(quán)路路徑  ./test/3/5/5/5/5/5/5
  13. 授權(quán)路路徑  ./test/3/5/5/5/5/5/5/5
  14. 授權(quán)路路徑  ./test/3/5/5/5/5/5/5/5/5
  15. 授權(quán)路路徑  ./test/3/5/5/5/5/5/5/5/5/5
  16. 授權(quán)路路徑  ./test/3/5/5/5/5/5/5/5/5/5/5
  17. 授權(quán)路路徑  ./test/3/5/5/5/5/5/5/5/5/5/5/5
復(fù)制代碼


可以看到只是  ./test/3/5/5/5/5/5/5/5/5/5/5/5 完全完成了,DIRNUM 為0了,循環(huán)退出。


總結(jié)一下樓下各位的建議,這個問題的通用性比較好的解決方法如下:



  1. #!/bin/bash
  2. # site: Chinaunix  
  3. # Author: crisman,damofeixue,ivhb,echo52
  4. # name: chmodfile
  5. # 如若轉(zhuǎn)載,引用, 請保留以上信息

  6. if [ $# -ne 2 ]
  7.   then
  8.     echo "  "
  9.     echo " usage:  chmodfile DIR NUM"
  10.     echo " DIR 為需要授權(quán)的起始目錄 NUM為需要授權(quán)的目錄級數(shù)(為正的整數(shù))"
  11.     echo " 例如: ./chmodfile ./  5
  12.     echo "  "
  13.     exit 1
  14. fi

  15. for i in `seq 1 $2`
  16.   do
  17.    find $1 -mindepth $i -maxdepth $i -type d |xargs chmod 755
  18. done

復(fù)制代碼


感謝crisman,damofeixue,ivhb   特此結(jié)貼!

[ 本帖最后由 echo52 于 2009-7-14 16:33 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2009-07-13 15:35 |只看該作者
授權(quán)是啥意思 chown嗎?

論壇徽章:
0
3 [報告]
發(fā)表于 2009-07-13 15:36 |只看該作者
chown?還是chmod?
都有-R參數(shù),何苦這樣呢?

論壇徽章:
0
4 [報告]
發(fā)表于 2009-07-13 15:38 |只看該作者
除非想每一級都不同

論壇徽章:
0
5 [報告]
發(fā)表于 2009-07-13 15:39 |只看該作者
當(dāng)每一個目錄都有上億的文件的時候。一個find可能導(dǎo)致內(nèi)存耗盡,一個-R 可能一個月都完成不了。
而如果分級進(jìn)行的話可能會快很多。

論壇徽章:
5
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亞洲杯之朝鮮
日期:2015-03-13 22:47:33IT運維版塊每日發(fā)帖之星
日期:2016-01-09 06:20:00IT運維版塊每周發(fā)帖之星
日期:2016-03-07 16:27:44
6 [報告]
發(fā)表于 2009-07-13 15:46 |只看該作者

回復(fù) #5 echo52 的帖子

沒有這么夸張吧。

論壇徽章:
0
7 [報告]
發(fā)表于 2009-07-13 15:52 |只看該作者

回復(fù) #5 echo52 的帖子

無論如何都是更改 indoe 中的信息,最終還會具體到每個文件, chown -R不ok嗎?

論壇徽章:
0
8 [報告]
發(fā)表于 2009-07-13 15:53 |只看該作者
目錄量也很大嗎?這樣會有問題嗎?

  1. find /tmp/test -type d -exec chmod 755 {} \;
復(fù)制代碼

論壇徽章:
5
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亞洲杯之朝鮮
日期:2015-03-13 22:47:33IT運維版塊每日發(fā)帖之星
日期:2016-01-09 06:20:00IT運維版塊每周發(fā)帖之星
日期:2016-03-07 16:27:44
9 [報告]
發(fā)表于 2009-07-13 15:54 |只看該作者
把find都搞殘了,估計難辦。

論壇徽章:
0
10 [報告]
發(fā)表于 2009-07-13 16:03 |只看該作者
原帖由 kwokcn 于 2009-7-13 15:53 發(fā)表
目錄量也很大嗎?這樣會有問題嗎?

find /tmp/test -type d -exec chmod 755 {} \;


目錄量也很大,我試過,只是一個find ./ -type d  就導(dǎo)致服務(wù)器無響應(yīng),只能硬關(guān)機,所以只能分步逐級進(jìn)行。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP