というディレクトリがあり、Musique
ONLYを使用してファイルのリストを保存したいと思います。nom.txt
echo
しかし、ディレクトリの隠しファイルもコピーし、\n
改行文字()を使用してディレクトリの「一般」ファイルから分離したいと思います。
このコマンドを試しましたが、動作しません。なぜ動作しないのかわかりません。 :
echo -e Musique/ \n.* > nom.txt
echo -e \n.* Musique/ > nom.txt
echo -e /Musique \n.* > nom.txt
誰かが私にこれを説明できますか?ありがとう
答え1
私が正しく理解した場合は、追加情報が得られるまで次のコマンドを使用できます。
$ LC_ALL=C ls -1Ar | sed '0,/^\./s/^\./\n./' > nom.txt
$ cat nom.txt
b.txt
c.txt
.foo
.bar
答え2
引用符のない2文字の文字列は\n
シェルからに変わりますn
。これは、各コマンドラインが文字列(または)の前後にecho
文字列をn.*
ファイルに印刷することを意味します。現在のディレクトリにパターンと一致するファイルがある場合、コマンドはそのファイルを 。nom.txt
Musique/
/Musique
n.*
echo
echo -e
おそらくinを使用しているので、bash
Cエスケープシーケンス(または)を含む引数で指定されたすべての名前は、\n
印刷前に変更\t
されます。echo
あなたは言わなかったが、あなたが望むものは具体的にecho
。Musique
ディレクトリ名自体。
ディレクトリの下のすべてのパス名のリストを使用するのが最も簡単ですfind
。
find Musique
上記のコマンドは、特定の検索パスを再帰的に検索し、見つかった各パス名を独自の行に出力します。サブディレクトリへの繰り返しを停止するには、コマンドの最後にfind
それを追加します(Linuxシステムなどの最新の実装を使用しているとします)。-maxdepth 1
find
隠されていない名前に対してのみこれを実行してください。
find Musique ! -name '.*'
または、隠された名前にのみ適用されます。
find Musique -name '.*'
パス名をスペースで区切って1行に表示し、find
結果をpaste
。
find Musique -maxdepth 1 | paste -s -d ' ' -
生成されたパス名のリスト自体は、見る以外には役に立ちません。たとえば、Unix システムのファイル名にはスペース、タブ、および改行を含めることができるため、ファイル名を確実に区別することは困難です。
各パス名に対して操作を実行するには、通常、find
その述語を使用して-exec
コマンドで実行できます。
答え3
私はあなたが次のようなことをしたいと思います:
echo -e Musique/* '\n' Musique/.* >nom.txt