find 命令返回当前工作目录作为第一个输出

find 命令返回当前工作目录作为第一个输出

我正在使用find多个目录,这些目录具有相同的文件名但内容不同。然后,我将它们复制到一个具有数字文件名的目录。

我面临的问题是该find命令读取文件夹的顺序与命令不同ls。使得将新文件与其原始目录关联起来变得困难。

find我的解决方案是在原始目录上运行相同的命令,以使它们按相同的顺序排列并相应地编号。

#!/bin/sh

find . -maxdepth 1 -type d | sed 's#./##' > rename.list
j=1
while read -r line
do
    mv ./"$line" ./"$j"_"$line"
    j=$(( $j + 1))
done < rename.list

这几乎解决了问题,但find由于某种原因,该命令将当前工作目录列为第一个输出,该输出将编号偏移 1。

$ find . -maxdepth 1 -type d | sed 's#./##'
.
dir2
dir1
dir3

不过,我运行的第一个find命令没有遇到同样的问题:

find . -wholename "*__substg1.0_007D001E*" -wholename "*attach_version*" -type d > header_files.txt

答案1

将选项设置-mindepth1ie-mindepth 1以从 的输出中排除当前目录 ( .) find

find . -maxdepth 1 -mindepth 1 -type d

相关内容