几个与文本处理相关的Linux命令总结
1.当前目录下有若干文件,找出扩展名为TextGrid的所有文件,并复制到…/file_set。
find . -name "*.TextGrid" \-exec cp {} ../file_set/ \;
2.当前目录下有若干文件,找出扩展名为“TextGrid”且非UTF-8(UTF-8 Unicode Text,with CRLF line terminators)编码的文件,并将其移动到…/trash。该类型的文件命名规则为16位随机数字。
for s_file in `for t_file in $(ls *.TextGrid);do file $t_file|grep -v "UTF-8 Unicode Text,with CRLF line terminators"|grep -o -E [0-9]{16}\.TextGrid;done` do mv $s_file ../trash ;done
3.产生一个含有大写字母和数字长度为8的随机字符串。
echo $RANDOM|md5sum|tr -t [a-z] [A-Z]|cut -b 1-8
4.批量删除文本中以某指定字符串匹配的行。
sed -i '/^sid/d' test.txt
5.查看系统中所有人可读写执行的不安全文件。
find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)
6.当前目录中有300个文件,现需要从该批文件中随机选取100个并移动到上层目录to_dir中。
for $files in `ls|sort --random-sort|head -n 100`;do mv $files ../to_dir/ ; done
7.当前目录有若干UTF-8带BOM的文件,需删除这些文件中的BOM。
for files in `ls`;do sed -i 's/\xEF\xBB\xBF//g' $files ;done
8.当前目录下有若干UTF-8文件,使用file命令查看,显示“UTF-8 Unicode (with BOM) text”,找出非该类文件,并查看他们的内容。
file *|grep -v "UTF-8 Unicode (with BOM) text"|awk -F ":" '{print $1}'|xargs cat
9.当前目录下有一批UTF16BE的文件,需转换成UTF-8,转换完成后需将新文件保存到上层目录to_dir中。
for files in `ls`; do iconv -f UTF16BE -t UTF-8 -o ../to_dir/$files $files;done