某文件夹下有很多文件, 将文件夹中的文件拆分到多个目录中
cd file_path
ls | head -20000 | xargs -i {} mv {} /new_path
说明: xargs -i 是将输出按照行为单位输出给后面的命令, 例如:
find ./logs -name "*log" | xargs -i echo {}
说明: xargs -p 逐条确认执行,每次输出,都会让你手动确认下是否执行,y 执行, n 不执行,例如:
find ./logs -name "*log" | xargs -p -i echo {}
用 xargs file 输出文件类型
find . -type f -print | xargs file
文件批量修改后缀
rename 's/\.jpg\.jpeg/g'
找出不符合命名规则的文件
find -type f -print |grep "jpg" | grep -vE "[A-Za-z0-9_\/ ]+\([0-9]+\).jpg" |xargs -i cp {} /data/doit
说明: 在 shell 下使用 grep 空格 直接使用空格就好, s 貌似不好使 , d 貌似也不好使, 直接使用 [0-9], 是不是真这样呢?
批量压缩图片
进入目录后进行转换, 用 find 命令配合 xargs 会报错,但是在目录下操作就没问题
ls | xargs -i convert -resize 1200 -quality 95% {} ../new path/{}
批量整理文件名
很多文件, 文件名类似 name_1.jpg, name_2.jpg, 需要整理出不重复的 name. 文件名比较有规律, 所以用 substr 方法截取.
ls -l | xargs -i expr substr {} 1 9 | sort -u > 1.txt
redis 根据条件清理 key
通过 pattern 匹配
redis-cli -a password --scan --pattern '*history*' | xargs redis-cli -a password del {}
通过 shell 匹配
#! /bin/bash
if [ ${#1} -eq 56 ]
then
redis-cli -a mingDA@1234 del $1
fi
redis-cli -a --scan --pattern 'history' | xargs -i /root/check.sh {}
#### 创建 swap 交换磁盘
dd if=/dev/zero of=swap.disk bs=1M count=3k && mkswap -f swap.disk && swapon swap.disk