bash脚本只搜索特定文件类型的目录

时间:2016-03-11 21:25:42

标签: linux bash

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

这是一个让你入门的原型

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

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

答案 1 :(得分: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