ファイル名を含むリストファイルがあり、リストから一度に1つのファイル名を読み取り、複数のサブフォルダーがあるディレクトリ構造内でそのファイル名を見つけて、見つかったらdiffフォルダーに移動しようとします。
前任者:
listfile.txt
Content of the file--
filename1.txt
filename2.txt
maindir
|--subdir1
|---subdir2/filename1.txt
|---subdir3/filename2.txt
listfile.txtでファイル名を1つずつ読み、diffフォルダ(/ destfolderなど)に移動します。
どんな提案でもいいでしょう。
ありがとう、キャビン
ベストアンサー1
シェルループを使用し、find
各ファイル名に対して一度呼び出します。
mkdir -p archive_dir
while IFS= read -r filename; do
find maindir -type f -name "$filename" -exec mv {} archive_dir ';'
done <listfile.txt
ファイルが見つかった後も一致するファイル名を探し続けるため、少し非効率的です。書く引っ越した人)。
GNUを使用している場合は、最初のファイルを移動した後にプロセスが停止するようにコマンドの最後にfind
追加できます。-quit
find
find
仕組みを見せてください:
$ cat listfile.txt
filename1.txt
filename2.txt
.
|-- listfile.txt
`-- maindir
|-- subdir1
|-- subdir2
| `-- filename1.txt
`-- subdir3
`-- filename2.txt
4 directories, 3 files
(上記のループを実行)
それから:
.
|-- archive_dir
| |-- filename1.txt
| `-- filename2.txt
|-- listfile.txt
`-- maindir
|-- subdir1
|-- subdir2
`-- subdir3
5 directories, 3 files
関連: