一、rm 排除指定文件或文件夹

rm -ri !(.git)  // 有些系统不支持,勿轻易尝试

ls -a | grep -v '^\.git' |xargs rm -rf   // 通过管道流直接操作

操作特殊字符 --

rm -rf -- -r.txt

 

二、find <指定目录> <指定条件> <指定动作>

$ find . -name 'my*' -ls

搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。

find /etc -name "*.conf"

find /etc ! -name "*.conf"

find /etc -type d

b - 块设备文件。 d - 目录。 c - 字符设备文件。 p - 管道文件。 l - 符号链接文件。 f - 普通文件。

 

三、cut -d {分隔符} -f{第几个}

find *.rmvb | cut -d"." -f1

输出  rmvb 扩展的文件名

 

四、xargs

将标准输入转为命令行参数。

原因:Unix 命令都带有参数,有些命令可以接受"标准输入"(stdin)作为参数。比如 grep 命令

cat /etc/passwd | grep root

其中 “|”  是管道符,是将一个命令的标准输出管道为另外一个命令的标准输入。grep 接受“标准输入”作为参数。

对于 grep 还可以使用 - 作为参数,从标准输入中读取数据

$  grep hello -
hello java

但是 rm 就不支持从标准输入读取

find -name hello* | rm

此时可以使用 xargs 主动将标准输入转换为参数

# -p参数打印出要执行的命令,询问用户是否要执行
find -name "hello*" | xargs -p rm -rf

# -i 将参数替换为 {}
$ ls | xargs -t -i mv {} {}.bak

默认情况下,xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数。

$ echo "one two three" | xargs mkdir

-d 用于指定分隔符

$ echo -e "a\tb\tc" | xargs -d "\t" echo
a b c

grep 除了支持标准输入的读取,还可以指定参数,这样将从参数所表示的文件中读取数据。比如下面命令找出所有 TXT 文件以后,grep 将对每个文件搜索一次是否包含字符串

find . -name "*.txt" | xargs grep "abc"

 

五、grep  (global search regular expression(RE) and print out the line 

使用正则表达式搜索文本,并把匹配的行打印出来。

grep  pattern  [file...]

比如:

① 通过管道对 ls -l输出的内容过滤,只显示以 a 开头的行

ls -l | grep '^a' 

② 显示在aa,bb,cc 文件中匹配 test的行。

grep 'test' aa bb cc 

③ grep -v 排除选择(invert-match)。过滤不以 a开头的行。

ls -l | grep -v '^a' 

④ grep -e 排除特殊字符

grep --help |grep -e -v

 

 六、for  in 循环

基本格式

for 变量 in 取值列表
do
    各种操作
done

比如

for i in {1..100..2}
do
    echo $i
done

 

七、cat 命令

写入文件

cat  <<EOF >hello.txt
hello java
EOF

  

end

相关文章:

  • 2022-12-23
  • 2021-10-08
  • 2021-07-21
  • 2021-09-04
  • 2021-12-06
  • 2021-10-28
  • 2021-11-24
  • 2021-08-16
猜你喜欢
  • 2021-12-05
  • 2021-11-23
  • 2021-08-29
  • 2022-12-23
  • 2022-12-23
  • 2022-02-06
  • 2022-12-23
相关资源
相似解决方案