| xargs -i
时间: 2024-01-05 10:20:15 浏览: 31
`| xargs -i` 是一个在命令行中使用xargs命令的选项。它允许我们在每个参数上执行一个命令,并且可以交互式地与用户进行交互。
下面是一个示例,演示了如何使用`| xargs -i`选项:
```shell
find /tmp -name "*.txt" | xargs -i rm -i "{}"
```
这个命令会在`/tmp`目录下找到所有以`.txt`结尾的文件,并使用`rm -i`命令逐个询问用户是否要删除这些文件。
请注意,`{}`是一个占位符,它会被xargs命令替换为每个参数(即文件名)。
相关问题
find . |xargs -I -t sed -I 's|women|men|g' {}
这个命令的作用是在当前目录及其子目录中查找所有文件,并将文件中的"women"替换为"men"。具体的命令如下所示:
```shell
find . | xargs -I -t sed -i 's|women|men|g' {}
```
其中,`find .`用于查找当前目录及其子目录中的所有文件,`xargs -I -t`用于将查找到的文件作为参数传递给后面的命令,`sed -i 's|women|men|g' {}`用于将文件中的"women"替换为"men"。
请注意,这个命令会直接修改文件内容,请谨慎使用。
在sh脚本里执行ls -t /home/| sed -n '5,$p' | xargs -I {} rm -rf {},删除不了/home/下面的文件
如果你在Shell脚本中执行 `ls -t /home/| sed -n '5,$p' | xargs -I {} rm -rf {}` 命令来删除 `/home/` 目录下的文件,但是没有成功删除文件,可能是因为文件名中包含特殊字符或空格导致命令无法正确处理。
为了解决这个问题,你可以尝试使用 `find` 命令来删除目录下的文件,它可以更好地处理特殊字符和空格。你可以将以下内容保存为一个Shell脚本并执行:
```bash
#!/bin/bash
find /home/ -type f -printf '%T@ %p\n' | sort -nr | tail -n +5 | awk '{$1=""; print $0}' | xargs -I {} rm -rf {}
```
上述脚本使用 `find` 命令来获取 `/home/` 目录下的所有文件,并按照修改时间进行排序。然后使用 `tail` 命令来截取排序后的结果,保留从第5行开始的所有行。接下来使用 `awk` 命令去除每行中的时间戳部分,最后使用 `xargs` 命令来逐个删除文件。
请注意,在删除文件时要谨慎操作,确保你要删除的文件是正确的。在尝试运行脚本之前,最好先进行备份或测试。