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

Linux bash脚本只搜索目录中的特定文件类型,linux,bash,Linux,Bash,我正在尝试编写一个bash脚本,它将在文件夹中搜索特定的文件扩展名(比如.txt和.csv)。文件夹可以有数千个每种类型的扩展名。如果文件夹在所有文件中只有这两个扩展名,则脚本可以继续。如果存在任何其他扩展名(也可以预设两个允许的扩展名),脚本会将文件夹复制到一个存储桶并写入日志文件。 正在搜索的文件夹将永远不会有子文件夹 因此,如果文件夹具有: .txt和.csv,这将通过 如果文件夹有: .mp3,这失败了 如果文件夹有: .txt、.csv和.mp3,这也会失败 谢谢 这是一个原型,让您开

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

因此,如果文件夹具有: .txt和.csv,这将通过 如果文件夹有: .mp3,这失败了 如果文件夹有: .txt、.csv和.mp3,这也会失败


谢谢

这是一个原型,让您开始学习

$ diff -q <(for f in *; do echo "${f##*.}"; done | 
  sort -u) <(echo -e "csv\ntxt") > /dev/null 2>&1
$diff-q&1
为给定目录创建扩展的排序列表,与给定的排序列表进行比较,如果不同,则失败。您必须检查返回的状态(0通过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

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