Linux:删除不包含特定行数的文件
发布时间:2020-12-14 01:52:00 所属栏目:Linux 来源:网络整理
导读:如何删除目录中具有多于或少于指定行数的文件(所有文件都有“.txt”后缀)? 解决方法 这个bash脚本应该可以解决问题.保存为“rmlc.sh”. 样品用法: rmlc.sh -more 20 *.txt # Remove all .txt files with more than 20 linesrmlc.sh -less 15 * # Remove AL
如何删除目录中具有多于或少于指定行数的文件(所有文件都有“.txt”后缀)?
解决方法
这个bash脚本应该可以解决问题.保存为“rmlc.sh”.
样品用法: rmlc.sh -more 20 *.txt # Remove all .txt files with more than 20 lines rmlc.sh -less 15 * # Remove ALL files with fewer than 15 lines 请注意,如果rmlc.sh脚本位于当前目录中,则会对其进行保护以防删除. #!/bin/sh # rmlc.sh - Remove by line count SCRIPTNAME="rmlc.sh" IFS="" # Parse arguments if [ $# -lt 3 ]; then echo "Usage:" echo "$SCRIPTNAME [-more|-less] [numlines] file1 file2..." exit fi if [ $1 == "-more" ]; then COMPARE="-gt" elif [ $1 == "-less" ]; then COMPARE="-lt" else echo "First argument must be -more or -less" exit fi LINECOUNT=$2 # Discard non-filename arguments shift 2 for filename in $*; do # Make sure we're dealing with a regular file first if [ ! -f "$filename" ]; then echo "Ignoring $filename" continue fi # We probably don't want to delete ourselves if script is in current dir if [ "$filename" == "$SCRIPTNAME" ]; then continue fi # Feed wc with stdin so that output doesn't include filename lines=`cat "$filename" | wc -l` # Check criteria and delete if [ $lines $COMPARE $LINECOUNT ]; then echo "Deleting $filename" rm "$filename" fi done (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |