我想编写一个shell脚本来搜索和删除目录中的所有非文本文件。
我基本上 cd 进入我想在脚本中迭代的目录并搜索所有文件。
——这是我不能做的部分——
如果文件是文本文件,我想使用 if 语句检查。如果不是,我想删除它,否则继续
谢谢
PS顺便说一下这是在linux中
我假设一个文件是一个“文本文件”,当且仅当它的名称与 shell 模式匹配时*.txt
。
file
当传递它确定包含文本格式的文件的名称时,程序总是输出单词“文本”。您可以使用 grep 测试输出。例如:
find -type f -exec file '{}' \; | grep -v '.*:[[:space:]].*text.*' | cut -d ':' -f 1
Run Code Online (Sandbox Code Playgroud)
我强烈建议在删除文件之前打印出要删除的文件,以便将输出重定向到文件然后执行:
rm $(<filename)
Run Code Online (Sandbox Code Playgroud)
查看“文件名”的内容后。并注意带有空格的文件名,如果有空格,事情会变得更复杂。
归档时间: |
|
查看次数: |
906 次 |
最近记录: |