第十六天

  1. inode是什么?
inode是linux文件系统中用于存储文件元数据的数据结构,包括但不限于:文件大小、所有者、用户组、权限模式、时间戳(如创建时间、修改时间和访问时间)、链接数以及指向文件实际数据块的指针。每个文件和目录在文件系统中都有一个唯一的inode号码,尽管用户通常通过文件名来引用文件,但在操作系统内部,它使用inode来识别并跟踪文件
  1. 查找 7天以前的文件
find . -type f -mtime +7

3 .查找出*.txt文件,批量移动到/tmp目录

find . -type f -name "*.txt" -exec mv {} /tmp/ \;
find ./ -type f -name "*.txt" | xargs mv -t  /tmp
  1. 将以oldboy开头的行找出来?
grep -r '^oldboy' .
grep '^abc' *

5.将全部内容显示,但不要显示空行

grep -v '^$'  文件名



[root@master ~]# vi 2.log
[root@master ~]# grep -v '^$' 2.log
djfasdf
sdjkfkasb
sdjkfhukas
fjskhfkas
sjkfhbsdgfwe
ksfksb
ejhfkase
jkehfkae
jkfnsekh
ksebjfkaejsb
jkehiae 
jkehfkase
khfkasehke
ekjhfkseghf'
sejbfjesg
ehjfjgse'
ejkrhkaehf
nekhfkuse
sejnkfheih
bnerfjkheuk
aenjkfhekg
bjeghfuieb
jkfhseghfiwe
hjaeshieubwauiet
ekjieht
nfehie
  1. 利用linux什么命令真正统计目录的大小?
du -sh 目录名



[root@master ~]# du -sh /etc/passwd
8.0K	/etc/passwd

系统特殊符号分别说下什么意思? 重点掌握 为写脚本铺垫

!:条件语句中代表逻辑非
>:追加,覆盖
>>:追加末尾 不覆盖

<<:用于向命令提供多行输入

&&:只有当前面的命令成功执行时,后面的命令才会被执行
||:只有当前面的命令执行失败时,后面的命令才会被执行

^:用于去除特殊字符的特殊意义
$:变量引用

''创建字面字符串,其中的内容会被原样解释,不进行任何变量展开、命令替换或其他特殊字符处理
"" 创建字符串,但是允许对其中的变量和命令替换进行解析和扩展

小结

xargs

xargs 是一个 Unix 和类 Unix 操作系统中的实用工具,它的主要作用是将标准输入(stdin)中的参数列表转换成小块分段,并传递给其他命令进行执行。这样可以避免因为参数列表过长而导致的问题。

xargs 命令经常与其他命令(如 find、grep、ls 等)一起使用,用于处理大量的文件或数据。它的主要优点在于可以灵活地处理输入数据,特别是当数据中包含特殊字符(如空格、引号等)时,xargs 可以正确地进行处理。

xargs 命令的常用选项包括:

-n:指定每次执行命令时使用的最大参数数量。例如,xargs -n 1 command 将逐个执行 command 的一个参数。
-I:将命令中指定的占位符字符串替换为标准输入中的参数。例如,xargs -I {} command {} 将使用标准输入中的参数替换 {}。
-t:在执行命令之前,将要执行的命令打印到标准错误输出。这有助于调试和查看将要执行的命令。
-p:在执行每个命令之前提示用户确认。这可以确保在执行重要操作之前得到用户的许可。
-0:当 stdin 含有特殊字符(如空格、引号等)时,将其还原为一般字符,以确保参数的正确传递。





find ./ -type f -name "*.txt" | xargs mv -t  /tmp
您提供的命令组合是正确的,用于在当前目录(./)及其子目录中查找所有 .txt 结尾的文件,并将它们移动到 /tmp 目录中。这里是命令的分解:

find ./ -type f -name "*.txt":这个命令会在当前目录(./)及其子目录中查找所有类型为文件(-type f)且文件名以 .txt 结尾(-name "*.txt")的文件。

|:这是一个管道符号,用于将前一个命令的输出作为下一个命令的输入。

xargs mv -t /tmp:xargs 命令会将 find 命令的输出(即文件名列表)作为参数传递给 mv 命令。mv 命令的 -t 选项允许您指定目标目录,之后列出要移动的文件。这样,所有通过管道传递的文件名都会被移动到 /tmp 目录中。

请注意,如果您使用的是 GNU 版本的 find 和 xargs(这在大多数 Linux 发行版中都是默认的),那么您的命令应该能够正常工作。然而,如果您的系统上 xargs 不支持 -t 选项(例如,在一些老版本的 Unix 或 BSD 系统中),您可能需要稍微修改命令。

在不支持 -t 选项的系统中,您可以使用如下命令:

bash
find ./ -type f -name "*.txt" | xargs -I {} mv {} /tmp/
这里,-I {} 选项告诉 xargs 使用 {} 作为替换字符串,mv {} /tmp/ 则将每个找到的文件移动到 /tmp 目录中。

在运行此类命令之前,请确保 /tmp 目录存在且您有足够的权限来移动文件到该目录。此外,如果 /tmp 目录中已存在与要移动的文件同名的文件,它们将被覆盖。如果您不想覆盖文件,您可能需要添加一些逻辑来检查并处理这种情况。




find ./ -type f -name "*.txt" | xargs cp -t  /tmp
您的命令组合是正确的,用于在当前目录(./)及其子目录中查找所有 .txt 结尾的文件,并将它们复制到 /tmp 目录中。这里是命令的分解:

find ./ -type f -name "*.txt":这个命令会在当前目录(./)及其子目录中查找所有类型为文件(-type f)且文件名以 .txt 结尾(-name "*.txt")的文件。

|:这是一个管道符号,用于将前一个命令的输出作为下一个命令的输入。

xargs cp -t /tmp:xargs 命令会将 find 命令的输出(即文件名列表)作为参数传递给 cp 命令。cp 命令的 -t 选项允许您先指定目标目录,然后列出要复制的文件。这样,所有通过管道传递的文件名都会被复制到 /tmp 目录中。

请确保 /tmp 目录存在且您有足够的权限来复制文件到该目录。如果 /tmp 目录中已存在与要复制的文件同名的文件,并且您使用的是 GNU coreutils 版本的 cp,那么默认情况下,cp 命令会询问您是否要覆盖这些文件。如果您不希望被提示,您可以使用 -f 选项来强制覆盖:

bash
find ./ -type f -name "*.txt" | xargs cp -t /tmp -f
此外,如果您的 xargs 或 cp 命令版本不支持 -t 选项,您可以使用以下替代方法:

bash
find ./ -type f -name "*.txt" | xargs -I {} cp {} /tmp/
这里,-I {} 选项告诉 xargs 使用 {} 作为替换字符串,cp {} /tmp/ 则将每个找到的文件复制到 /tmp 目录中。

在运行此类命令之前,请确保您了解它的行为,并准备好处理任何可能的文件覆盖或权限问题。




.. 返回上一级
. 当前目录

~ 返回家目录

- 2个目录快速切换