bash代码片段
bash
# Rename all *.txt to *.text
for file in *.txt; do
mv -- "$file" "${file%.txt}.text"
done
bash
while read x z y; do
of="xag.1/$x.png"
if="xag/$y.png"
cp $if $of
done < db.log
bash
tree -L 2 | sed 's/\xc2\xa0/ /g' > ~/Downloads/1.txt
bash
du -sh -t 100M *
移除重复行
bash
#整行比较
awk '!seen[$0]++' file
#第一个field比较
awk '!seen[$1]++' file
按指定field排序
bash
#按第二个field排序
sort -k2,2 file
按起始10个字符去重复
bash
uniq -w 10 file
od输出二进制文件数据
bash
od -x -v -A n --width=100 ./x.bin >od.txt
计算文本文件每行的md5
bash
cat od.txt | perl -MDigest::MD5=md5_hex -nlE'say md5_hex($_)' >db_x.txt
文件分割
bash
cat ../xtotal.pad | split -a 4 -d -l 52
一份文件复制两次
bash
n=0;
for x in x*; do
y=`printf "y%04d" $n` && ((n=n+1)) && cp $x $y
y=`printf "y%04d" $n` && ((n=n+1)) && cp $x $y
done
生成所有文件md5sum
bash
md5sum x*
ffmpeg批量提取多个视频中图像
bash
n=1; for x in round.0/*;do echo $x; fmt=frame${n}.%04d.png; ffmpeg -i $x -vf "fps=2" $fmt; ((n=n+1)); done
bash
#!/bin/bash
hexpattern="0-9a-f"
pattern='$LZSKGHVRMTBCDEF'
input=$1
cat $input | sed 's/\s//g' | tr $hexpattern $pattern | awk 'BEGIN{print} {print " ", $0}'
perl
#!/usr/bin/perl
$pad='9999';
$nword_per_line=50;
$nline_per_page=52;
$num_of_lines=0;
while(<>)
{
@array=split;
$nword=@array;
while($nword < $nword_per_line)
{
push(@array,$pad);
$nword+=1;
}
$str=join(" ",@array);
print $str,"\n";
$num_of_lines+=1;
}
while($num_of_lines%$nline_per_page)
{
print $str, "\n";
$num_of_lines+=1;
}
bash
#!/bin/bash
#set -x
for((n=0;n<200;n+=20)); do
((s=n))
((e=n+19))
d=`printf '%03d-%03d\n' $s $e`
[ -e $d ] && rm -rf $d && echo "delete $d"
mkdir -p $d
for ((i=s;i<=e;i++));do
x=`printf 'x%03d\n' $i`
[ -e $x ] || exit
mv $x $d/.
done
done
bash
find . -path './backup/*' -prune -o -path './.git/*' -prune -o type f -o -iname '*.f90' | xargs wc -l | sort -n
数字列表
bash
for f in x00{01..11};do
echo $f
done
for f in x00{1..9}{a..b};do
echo $f
done
单个字符匹配(glob-expansion)
bash
#!/bin/bash
echo "Matching Directories:"
for dir in [p-xP-X]*; do
if [ -d "$dir" ]; then
ls -d "$dir"
fi
done
watch
bash
watch tail -n 15 mylogfile.txt
tee
bash
#stdout&stderr重定向到tee
xxxx |& tee run.loog
cygpath
bash
cygpath "D:\xxxx"