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