find 命令不仅可以查找文件,还可以查找文件内容,这需要与 xargs 一起使用,这个也是一种非常常用的方法:
find . -name "*.php" | xargs grep -n mysql
find . \( -name "*.php" -or -name "*.html" \) | xargs grep -n mysql
下面这个命令可以查询到当前目录下(包含子目录)哪些文件包含 update 字样:
grep -rl 'update' ./
再配合 sed 命令可以实现批量文件内容的修改:
grep -rl 'update' | xargs sed -i 's/update/UPDATE/g'
示例:
#列出所有 .png 或 .jpg 文件,并将文件修改为 644 模式
find /your/directory/path -type f \( -name "*.png" -o -name "*.jpg" \) -exec chmod 644 {} \;
#列出所有 .png 文件的读取权限
find /your/directory/path -type f -name "*.png" -exec ls -l {} \; | awk '{print $1, $9}'
#假设有一个文件列表,想要逐一删除列表中的这些文件
cat file_list.txt | xargs -I {} rm {}