查找不包含“*.sql”文件的目录
Find directories that doesn't contain "*.sql" files
我有几个目录如下。我想列出没有 SQL 文件的目录。例如下面示例中的 "dev.mysite.com"。我正在使用 ubuntu 14.04 LTS
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/...
我尝试使用 "find" 与 "cut" 和 "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 {} \;
但是上面的命令显示了所有目录
有没有更好的方法?
谢谢
我最近遇到了类似的问题,这对我有用
for f in $(find . -type d -maxdepth 2); do if [[ $(ls -1 $f | grep '.sql$'|wc -l) == 0 ]] ; then echo $f; fi; done
find . -type d -print0 | while read -d $'[=10=]' n; do [ -f "$n"/*.sql ] || echo $n; done
即使使用异国情调的目录名称(空格、换行符...)也能正常工作
我有几个目录如下。我想列出没有 SQL 文件的目录。例如下面示例中的 "dev.mysite.com"。我正在使用 ubuntu 14.04 LTS
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/...
我尝试使用 "find" 与 "cut" 和 "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 {} \;
但是上面的命令显示了所有目录
有没有更好的方法? 谢谢
我最近遇到了类似的问题,这对我有用
for f in $(find . -type d -maxdepth 2); do if [[ $(ls -1 $f | grep '.sql$'|wc -l) == 0 ]] ; then echo $f; fi; done
find . -type d -print0 | while read -d $'[=10=]' n; do [ -f "$n"/*.sql ] || echo $n; done
即使使用异国情调的目录名称(空格、换行符...)也能正常工作