创建两个空文件
touch file1 file2
递归式创建一些嵌套目录
mkdir -pv /tmp/xxs/dsd/efd
递归式删除嵌套目录
rm -fr /tmp/xxs
回当前用户的宿主目录
cd ~ # 这个是波浪线,在 Tab 键的上面
# 或者更简单的
cd
回到上一次的目录
cd - # 这个是连字符,在退格键的左边两个
查看当前所在目录的绝对路经
pwd
获得文件的后缀名
echo xxx.xxx.rmvb |sed 's/.*\(\..*$\)/\1/'
去除文件的后缀名
echo xxx.xxx.rmvb |sed 's/\(.*\)\..*$/\1/'
列出当前目录下的所有文件,包括以. 开头的隐含文件的具体参数
ls -al
或(在 Ubuntu 中)
ll
移动路径下的文件并改名
mv 路径/文件 /新路径/新文件名
复制文件或者目录
cp -av 原文件或原目录 新文件或新目录
查看文件类型
file filename
查看文件的时间
stat filename
对比两个文件之间的差异
diff file1 file2
一边比较一边编辑还是彩色的:(需要安装 Vim)
vimdiff file1 file2
显示 xxx 文件倒数 6 行的内容
tail -6 xxx
让 tail 不停地读取最新的内容
tail -10f /var/log/apache2/access.log
或者这样
tailf /var/log/apache2/access.log
查看文件中间的第五行(含)到第 10 行(含)的内容
sed -n '5,10p' /var/log/apache2/access.log
查找关于 xxx 的命令
apropos xxx
man -k xxx
通过 ssh 传输文件
scp -rp /path/filename username@remoteIP:/path #将本地文件拷贝到服务器上
scp -rp username@remoteIP:/path/filename /path #将远程文件从服务器下载到本地
tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; cat -> path.tar.gz" #压缩传输
tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; tar xvzf -" #压缩传输一个目录并解压
rsync -avh /path/to/file/or/dir user@host:/path/to/dir/or/file
rsync -avh user@host:/path/to/file/or/dir /path/to/file/or/dir
把所有文件的後辍由 rm 改为 rmvb
rename 's/.rm$/.rmvb/' *
把所有文件名中的大写改为小写
rename 'tr/A-Z/a-z/' *
删除特殊文件名的文件,如文件名:–help.txt
rm -- --help.txt 或者 rm ./--help.txt
查看当前目录的子目录
ls -d */ 或 echo */
将当前目录下最近 30 天访问过的文件移动到上级 back 目录
find . -type f -atime -30 -exec mv {} ../back \;
查找当前目录下最近 30 天访问过的文件打包备份
find . -type f -atime -30 | xargs tar zcvpf backup.tar.gz
find . -type f -atime -30 -print -exec tar rvpf backup.tar {} \;
显示系统服务器一小时以内的包含 xxxx 的所有邮件
find /home/ -path "*Maildir*" -type f -mmin -60|xargs -i grep -l xxxx '{}'
将当前目录下最近 2 小时到 8 小时之内的文件显示出来
find . -mmin +120 -mmin -480 -exec more {} \;
删除修改时间在 30 天之前的所有文件
find . -type f -mtime +30 -exec rm -v {} \;
删除访问时间在 30 天之前的所有文件
find . -type f -atime +30 -exec rm -v {} \;
查找 guest 用户的以 avi 或者 rm 结尾的文件并删除掉
find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm {} \;
查找不以 java 和 xml 结尾,并 7 天没有使用的文件删除掉
find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm {} \;
查找目录下所有有包含 abcd 文字的文本文件,并替换为 xyz
grep -rIl "abcd" ./* --color=never | xargs sed -i "s/abcd/xyz/g" #注意grep的一个参数是大写的i,一个参数是小写的L
删除当前目录里面所有的 .svn 目录
find . -name .svn -type d -exec rm -fr {} \;
删除当前目录所有以 “~” 结尾的临时文件
find . -name "*~" -exec rm {} \;
删除包含 aaa 字符串的所有文件
grep -rl "aaa" * |xargs rm -fv
统计当前文件个数
echo $(($(ll|wc -l)-3));
统计当前目录下所有 jpg 文件的尺寸
find . -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
统计当前目录个数
ls -l /usr/bin|grep ^d|wc -l
统计当前目录下占空间最大的前 10 名文件或目录
du -sm * | sort -nr | head -10
显示当前目录下 2006-01-01 的文件名
ls -l |grep 2006-01-01 |awk '{print $8}'
备份当前系统到另外一个硬盘
sudo rsync -Pa / /media/disk1 --exclude=/media/* --exclude=/home/* --exclude=/sys/* --exclude=/tmp/* --exclude=/proc/* --exclude=/mnt/*
使用 ssh 方式同步远程数据到本地目录
rsync -Pa -I --size-only --delete --timeout=300 Remote_IP:/home/ubuntu/back /backup
使用 ftp 方式同步远程数据到本地目录
lftp -c "open Remote_IP;user UserName Password;set cache:enable false;set ftp:passive-mode false;set net:timeout 15;mirror -e -c /back /backup;"
去掉文件中的^M
#注意不要使用同样的文件名,会清空掉原文件
cat -A filename| tr -d "^M$" > newfile
或者
cat -A word|sed -e 's/\^M\$//g' > newfile
直接修改文件
ex "+:%s/[Ctrl+V][Enter]//g" "+:wq" filename
或者
dos2unix filename
转换 Dos 文本文件到 Unix 文本文件
tr -d '\15\32' < dosfile.txt > unixfile.txt #dos = > unix
awk '{ sub("\r$", ""); print }' dosfile.txt > unixfile.txt #dos = > unix
awk 'sub("$", "\r")' unixfile.txt > dosfile.txt #unix = > dos
转换 bin/cue 到 iso 文件
#sudo apt-get install bchunk
bchunk image.bin image.cue image
转换目录到 iso 文件
mkisofs -o isofile.iso dirname
转换 CD 到 iso 文件
dd if=/dev/cdrom of=isofile.iso
将一个文件作为附件发到邮箱
#sudo apt-get install mailutils sharutils
uuencode xxx.tar.gz xxx.tar.gz |mail xxx@xxx.com
(echo "hello, please see attached file"; uuencode xxx.tar.gz xxx.tar.gz)| mail xxx@xxx.com