【问题标题】:Null character breaks pipe in find -exec空字符在 find -exec 中破坏管道
【发布时间】:2011-01-17 20:24:49
【问题描述】:

我试图找到给定目录下的每个 Perl 脚本,并运行我在它们上面编写的脚本。我想出了类似的东西

找到 . -type f -exec 文件 {} \; | grep perl | awk -F':' '{打印 $1}' |我的脚本

我担心某处的文件名中有一个“:”,所以尽管我会使用file--print0 选项来给我类似的东西

找到 . -type f -exec 文件 --print0 {} \; | grep perl | awk -F'\0' '{打印 $1}' |我的脚本

它不起作用。相反,我收到一堆find: `file' terminated by signal 13 错误,据我所知,这表明管道损坏。是否有:

  • 一种更好的方式来获取我的所有 Perl 脚本的路径,或者
  • 一种避免空字符破坏管道的方法
  • 【问题讨论】:

      标签: pipe


      【解决方案1】:

      毕竟真的很简单:

      find . -type f -exec file --print0 "{}" + | \
      perl -aF'\0' -lne 'print$F[0] if/perl/i'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 2019-04-01
        相关资源
        最近更新 更多