1

ディレクトリとサブディレクトリをテキスト ファイルに書き込むスクリプトが必要です。

たとえば、スクリプトは /Mainfolder にあり、このフォルダーには他の 4 つのフォルダーがあります。それぞれに複数のファイルが含まれています。

ここで、スクリプトで各ファイルのパスをテキストファイルに書き込みたいと思います。

Subfolder1/File1.dat
Subfolder1/File2.dat
Subfolder2/File1.dat
Subfolder3/File1.dat
Subfolder4/File1.dat
Subfolder4/File2.dat

重要なのは、リストの前にスラッシュがないことです。

4

4 に答える 4

3

find次のコマンドを使用します。

find Mainfolder > outputfile

リストされたファイルのみが必要な場合は、

find Mainfolder -type f > outputfile

format オプション./を使用して、現在のディレクトリを検索する場合、先頭を削除することもできます。%P

find . -type f -printf '%P\n' > outputfile
于 2013-08-26T11:06:34.437 に答える
1

bash のバージョンが十分に高い場合は、次のように実行できます。

#!/bin/bash
shopt -s globstar
echo ** > yourtextfile
于 2013-08-26T11:05:26.023 に答える
1

このソリューションは、サブディレクトリにファイルのみが含まれていることを前提としています。サブディレクトリにはディレクトリが含まれていません。

find . -type f -print | sed 's|^.*/S|S|'

4 つのサブディレクトリのそれぞれに 1 つのファイルを作成しました。元の出力は次のとおりです。

./Subfolder1/File1.dat
./Subfolder4/File4.dat
./Subfolder2/File2.dat
./Subfolder3/File3.dat

フィルタリングされた出力は次のとおりです。

Subfolder1/File1.dat
Subfolder4/File4.dat
Subfolder2/File2.dat
Subfolder3/File3.dat
于 2013-08-26T11:10:23.110 に答える
1

この検索を-exec次のように使用できます。

find . -type f -exec bash -c 'f="{}"; echo "${f:2}"' \;

これにより、先頭から削除することにより、現在のパスから始まるすべてのファイルが出力されます./

于 2013-08-26T11:10:43.210 に答える