【问题标题】:bash script to search directory only specific file types [duplicate]bash脚本仅搜索特定文件类型的目录[重复]
【发布时间】:2016-06-27 06:54:44
【问题描述】:

我正在尝试编写一个 bash 脚本,该脚本将在文件夹中搜索特定文件扩展名(比如说 .txt 和 .csv)。该文件夹可以有数千个每种类型的扩展名。如果文件夹在所有文件中只有这两个扩展名,则脚本可以继续。如果存在任何其他扩展(并且还可以预设两个允许的扩展),脚本会将文件夹复制到存储桶并写入日志文件。 正在搜索的文件夹永远不会有子文件夹。

所以,如果文件夹有: .txt 和 .csv,通过 如果文件夹有: .mp3,这失败了 如果文件夹有: .txt、.csv 和 .mp3,这也失败了。

谢谢!

【问题讨论】:

  • 您遇到了什么错误?请发布错误消息,以便我们帮助您调试代码。
  • 尝试使用shopt -s extglob 启用extglob sh 选项,并使用ls !(*.txt|*.csv) 列出*.txt*.csv 的倒数,最后检查退出状态echo $?

标签: linux bash


【解决方案1】:

嗯,为什么不呢:

\ls | grep -v -e '\.txt$' -e '\.csv$' | wc -l

如:

if [ `\ls | grep -v -e '\.txt$' -e '\.csv$' | wc -l` -gt 0 ]; then echo "Folder has files other than .txt, .csv"; fi

【讨论】:

    【解决方案2】:

    这里有一个原型让你开始

    $ diff -q <(for f in *; do echo "${f##*.}"; done | 
      sort -u) <(echo -e "csv\ntxt") > /dev/null 2>&1
    

    为给定目录创建一个扩展的排序列表,与给定的排序列表进行比较,如果不同则失败。您必须检查返回的状态(0 通过 1 失败)。请注意,它不会处理没有扩展名的子目录或文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-22
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 2017-05-07
      • 1970-01-01
      相关资源
      最近更新 更多