首页 > 解决方案 > 查找单行文件并将它们移动到子文件夹

问题描述

我正在使用以下 bash 行在子文件夹中查找具有给定模式的文本文件并将它们移动到子文件夹:

find originalFolder/ -maxdepth 1 -type f -exec grep -q 'mySpecificPattern' {} \; -exec mv -i {} destinationFolder/ \;

现在,如果文件只包含一行(文本),我想将文件移动到子文件夹,而不是 grepping 模式:我该怎么做?

标签: bashfilegrepfind

解决方案


你可以这样做:

while IFS= read -r -d '' file; do
   [[ $(wc -l < "$file") -eq 1 ]] && echo mv -i "$file" destinationFolder/
done < <(find originalFolder/ -maxdepth 1 -type f -print0)

注意echo前面的使用,mv以便您可以在实际执行之前验证输出mv。对输出满意后,删除echobefore mv


推荐阅读