Chinaunix

标题: 获取文件名超过特定字符个数的文件列表『难呀!高手快来』 [打印本页]

作者: jieyancai    时间: 2013-08-09 16:45
标题: 获取文件名超过特定字符个数的文件列表『难呀!高手快来』
本帖最后由 jieyancai 于 2013-08-09 16:57 编辑

比如目录a下面有如下很多个文件:
t1.txt
t2.txt
sdfl.dfd
sdsdflsdflsdf.txt
sdflsdflksdf.xls
t3333333.txt
lksfklsdfl.txt
ldsfsdflksdf.txt
welklkdsfsd.bs
lsdfklsdfl.tar
lkdsfsdfgofd.zip
sdfksd.doc


如何对文件名长度超过6个字节的文件直接zip打包?
zip不要包含6字节以下文件名的文件。

大侠们出手吧。
作者: 关阴月飞    时间: 2013-08-09 17:19
本帖最后由 关阴月飞 于 2013-08-09 17:20 编辑
  1. ls -1 |grep -E '.{7}'  |xargs zip fils.zip
复制代码

作者: doita    时间: 2013-08-09 17:21
wc -c就可以实现了.自然你要考虑到某些文件可能本身就是压缩好的,这里没有.写了一段丑陋的代码

  1. #!/bin/bash
  2. ls|while read file_name
  3. do  echo $file_name>/tmp/temp.txt
  4.    file_length=`wc -c /tmp/temp.txt|cut -d " " -f 1`
  5.    if [ $file_length -gt 6 ];then
  6.    gzip $file_name
  7.    fi
  8. done
复制代码

作者: h2ero    时间: 2013-08-09 17:23
本帖最后由 h2ero 于 2013-08-09 17:27 编辑
  1. ls | awk '{
  2. filename = $0
  3. sub(/\.[^\.]*$/,"",$0)
  4. if(length($0) >= 6){
  5.     print filename
  6. }
  7. }' | xargs  zip 6.zip
复制代码

作者: doita    时间: 2013-08-09 17:25
回复 2# 关阴月飞


    写的好简洁啊.
作者: cao627    时间: 2013-08-09 17:30
@关阴月飞
grep -E '^.{7}$'
作者: 关阴月飞    时间: 2013-08-09 18:05
回复 6# cao627


    好像楼主要求是 文件名在6个以上字符的,写死7个,跑题了吧
作者: cao627    时间: 2013-08-09 18:16
我跑题了
@关阴月飞
作者: 关阴月飞    时间: 2013-08-09 18:18
回复 4# h2ero
  1. ls -1 |awk 'length($0)>6' |xargs zip file.zip
复制代码

作者: cao627    时间: 2013-08-09 18:26
  1. echo ??????*  |xargs zip file.zip
复制代码

作者: 关阴月飞    时间: 2013-08-09 18:29
回复 10# cao627


    长姿势了,强!
作者: h2ero    时间: 2013-08-09 22:05
回复 9# 关阴月飞
那个我理解成了去掉后缀后的长度。


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2