2015-10-27 72 views
2

我有幾個目錄,如下面的目錄。我想列出沒有SQL文件的目錄。例如下面例子中的「dev.mysite.com」。即時通訊使用Ubuntu 14.04 LTS查找不包含「* .SQL」文件

orange.com/ 
    orange.com.sql 
    10.10.10.1/public_html/... 

apple.edu.us/ 
    apple.edu.sql 
    10.10.10.2/public_html/... 

dev.mysite.com/ 
    10.10.10.3/public_html/ 

example.com/ 
    mysql_dbdump20150911.sql 
    10.10.11.11/public_html/... 

伊夫試圖做到這一點使用「發現」和「剪切」和「xargs的」動人的這些目錄的「dirwithsql」目錄和手動取剩餘的爲目錄,而SQL文件。

find . -maxdepth 2 -iname "*.sql" | cut -d'/' -f 2 | xargs -n 1 -I {} mv {} /backup/dirwithsql/{} 

伊夫試圖與

find -maxdepth 2 ! -iname "*.sql" -exec dirname {} \; 

但上面的命令將顯示所有目錄

有沒有更好的方法? 謝謝

回答

1

我最近有一個類似的問題,這個工作對我來說

for f in $(find . -type d -maxdepth 2); do if [[ $(ls -1 $f | grep '.sql$'|wc -l) == 0 ]] ; then echo $f; fi; done 
+0

感謝的人:)它的工作原理,但我需要抓住這些表情 –

0
find . -type d -print0 | while read -d $'\0' n; do [ -f "$n"/*.sql ] || echo $n; done 

就必因此具有異國情調的目錄名工作(空格,換行...)