用find和xargs找出所有空目录并在其下创建文件
时间: 2024-03-13 17:45:36 浏览: 85
可以使用以下命令来查找所有空目录并在其下创建文件:
```
find /path/to/directory -type d -empty | xargs -I {} sh -c 'touch {}/file.txt'
```
其中,/path/to/directory 是要查找的目录的路径,-type d 表示只查找目录,-empty 表示只查找空目录,find 命令会将找到的空目录传递给 xargs 命令,xargs 命令会将目录作为参数传递给 sh 命令,并在每个目录下创建名为 file.txt 的文件。
相关问题
Linux查找属于个人创建的用户所属的文件,并拷贝 到/root/findfiles目录
在Linux中,你可以使用`find`命令结合用户的家目录信息来定位特定用户的所有文件。首先,你需要确定该用户的用户名。例如,假设你要找的是用户"username",可以这样做:
```bash
# 使用-uid选项查找指定用户id的所有文件
sudo find /home/username -type f -print0 | xargs -0 cp -t /root/findfiles/
```
这里解释一下命令步骤:
1. `find /home/username`: 从/home/username目录开始搜索,这个目录通常是用户主目录的位置。
2. `-type f`: 只查找普通文件,不包括目录或其他类型的文件。
3. `-print0`: 打印每个匹配项之前加上空字符作为分隔符,这对于处理包含空格的文件名非常有用。
4. `xargs -0`: 接收`find`的输出,用作`cp`命令的输入,并保留空字符分隔。
5. `cp -t /root/findfiles/`: 将找到的文件复制到目标目录"/root/findfiles/"。
注意:执行此操作需要管理员权限(通过`sudo`)。另外,如果你不想复制所有的文件,可以根据需要调整`find`命令的其他选项,如日期范围或文件大小等。
在linux中用管道和重定向统计codes目录中创建的文件个数,并将结果输出到另一个文件。
在Linux中,你可以使用`find`命令配合`wc -l`来统计codes目录及其子目录中新创建的文件个数,然后通过管道重定向将其保存到指定的文件中。假设你想找出自上次更新以来新增加的文件,可以这样做:
```bash
# 使用find命令查找codes目录及其子目录中新的空文件(也就是刚刚创建的)
find ./codes -type f -size 0c -print0 | xargs -0 ls -I '{}' && echo "" > temp_files.txt
# 然后通过wc -l计算文件数量
find . -name temp_files.txt | xargs wc -l | cut -d ' ' -f1 > file_count.txt
# 这里的temp_files.txt是一个临时文件,用来存储find的结果,之后我们会清空它
rm temp_files.txt
```
这段脚本首先查找codes目录下大小为0字节(新创建的文件通常初始为空)的所有文件,然后使用`xargs`和`ls -I {}`组合列出它们。接着,我们创建一个临时文件`temp_files.txt`存储这些结果,再通过`find`命令找到这个临时文件并使用`wc -l`计算行数(即文件数量),最后重定向结果到`file_count.txt`。