
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
出力から現在のディレクトリを除外するには、オプションをieに設定します-mindepth
()。1
-mindepth 1
.
find
find . -maxdepth 1 -mindepth 1 -type d