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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12下一頁(yè)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 10991 | 回復(fù): 19
打印 上一主題 下一主題

[學(xué)習(xí)共享] bash 下使用 cp 命令的 --parents 參數(shù) 實(shí)現(xiàn)遞歸拷貝 (付遞歸刪除) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-07-24 10:18 |只看該作者 |倒序?yàn)g覽
本帖最后由 ailms 于 2013-07-24 11:03 編輯

原文地址 :http://blog.ailms.me/2013/07/23/ ... d-del.html#more-607

把腳本部分改為文本了,另外有同學(xué)說(shuō)用 rsync 可以實(shí)現(xiàn)。是的,用 rsync 更方便,不過(guò)這個(gè)是另外一個(gè)實(shí)現(xiàn)方式而已,我的主要目的是說(shuō)明 cp 命令的 --parents 參數(shù)

今天一前同事在 QQ 上問(wèn)如何實(shí)現(xiàn)將 A 目錄下的某個(gè)子目錄(例如 A/sub1/sub2/sub3/file1) 拷貝到目錄 B ,并保持目錄結(jié)構(gòu)。

王XX 17:35:47
              我現(xiàn)在要查詢(xún)一個(gè)目錄,有很多層,找到最后一層,把路徑返回來(lái)

王XX 17:35:59
              最后一層可能是目錄,也可能是文件

boblin 17:37:01
             有沒(méi)有截圖啊,這個(gè)不是很好理解。你只要最后一層嗎?

王XX 17:38:20
              需求是這樣的,現(xiàn)在有兩個(gè)目錄,我要把一個(gè)目錄文件拷貝到另外一個(gè)目錄里,層次和原目錄不變

王XX 17:38:29
             刪除也按照原目錄刪除

boblin 17:39:15
            知道你意思了,就是你想 cp 文件,同時(shí)保留目錄結(jié)構(gòu)是把?

王XX 17:39:55
             對(duì)

這個(gè)需求本身并不難,可能大部分人想到的就是對(duì)原路徑稍微做下處理,截取目錄部分,然后作為參數(shù)傳給 mkdir -p 。然后再 cp 文件。

這個(gè)并不是不可以,但略顯麻煩,可以 有更簡(jiǎn)單的做法,就是

  1. #!/bin/bash

  2. srcDir=$(readlink -e -f $1)

  3. dstDir=$(readlink -e -f $2)

  4. (

  5.   if [ "$3" = "update" ] ; then

  6.        cd $srcDir && find . -type f | xargs -n 1 -i cp -u -v --parents {} $dstDir
  7.   else
  8.        cd $srcDir && find . -type f | xargs -n 1 -i cp -v --parents {} $dstDir
  9.   fi

  10. )
復(fù)制代碼
效果如下



既然有遞歸拷貝,但自然要有遞歸刪除了。同樣很簡(jiǎn)單

下面是原始目錄的內(nèi)容。要將 dstdir/ 目錄下的內(nèi)容變成跟 srcdir 一樣


  1. #!/bin/bash

  2. srcDir=$(readlink -f -e $1)

  3. dstDir=$(readlink -f -e $2)

  4. delList=$(join -v 2 <(cd $srcDir ; find . | sort) <(cd $dstDir ; find . |sort) | awk '{print $0,length($0)}' | sort -k2,2rn | awk '{print $1}')

  5. if [ -n "$delList" ] ; then

  6.     cd $dstDir
  7.    
  8.     while read name ; do
  9.    
  10.         if [ -f $name ] ; then
  11.    
  12.              rm -v $(readlink -f -e $name)
  13.    
  14.         elif [ -d $name ] ; then
  15.    
  16.              rmdir -v $(readlink -f -e $name)
  17.         fi
  18.    
  19.     done <<< "$delList"

  20. else
  21.     echo "nothing to del"
  22. fi
復(fù)制代碼
效果如下

論壇徽章:
50
15-16賽季CBA聯(lián)賽之廣夏
日期:2018-11-05 09:42:462015年亞冠紀(jì)念徽章
日期:2015-07-23 11:58:122015亞冠之廣州富力
日期:2015-07-07 08:26:172015亞冠之塔什干棉農(nóng)
日期:2015-06-29 09:08:072015年亞洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47處女座
日期:2014-10-16 15:33:33酉雞
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亞冠之德黑蘭石油
日期:2015-07-29 12:46:372015亞冠之德黑蘭石油
日期:2015-08-07 12:54:11
2 [報(bào)告]
發(fā)表于 2013-07-24 10:37 |只看該作者
謝謝分享!

論壇徽章:
13
丑牛
日期:2013-08-16 15:08:22技術(shù)圖書(shū)徽章
日期:2013-11-26 10:13:40雙魚(yú)座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技術(shù)圖書(shū)徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年紀(jì)念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午馬
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
3 [報(bào)告]
發(fā)表于 2013-07-24 10:41 |只看該作者
用rsync不就可以很容易的可以實(shí)現(xiàn)

論壇徽章:
3
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亞洲杯之阿曼
日期:2015-04-07 20:00:59
4 [報(bào)告]
發(fā)表于 2013-07-24 10:45 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2013-07-24 10:52 |只看該作者
回復(fù) 3# 代號(hào):軍刀


是的,rsync 也可以,這只是一個(gè) bash 的例子   

論壇徽章:
5
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亞洲杯之朝鮮
日期:2015-03-13 22:47:33IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-09 06:20:00IT運(yùn)維版塊每周發(fā)帖之星
日期:2016-03-07 16:27:44
6 [報(bào)告]
發(fā)表于 2013-07-24 10:52 |只看該作者
搞復(fù)雜了吧。

另外,建議貼文本。

論壇徽章:
5
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亞洲杯之朝鮮
日期:2015-03-13 22:47:33IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-09 06:20:00IT運(yùn)維版塊每周發(fā)帖之星
日期:2016-03-07 16:27:44
7 [報(bào)告]
發(fā)表于 2013-07-24 10:54 |只看該作者
謝謝分享!

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2013-07-24 15:04 |只看該作者
不明覺(jué)厲。。

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2013-07-24 15:48 |只看該作者
謝謝樓主分享,我一般用tar 命令來(lái)干這事,似乎速度也挺快
  1. tar c $(find /path/to/src/dir -type f ) | tar x -C /path/to/dest/dir
復(fù)制代碼

論壇徽章:
1
射手座
日期:2014-03-10 14:24:52
10 [報(bào)告]
發(fā)表于 2013-07-24 16:40 |只看該作者
不明覺(jué)厲!
您需要登錄后才可以回帖 登錄 | 注冊(cè)

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP