特定の名前の先頭に文字列を追加して、ファイルにディレクトリファイル名を書き込みます。

特定の名前の先頭に文字列を追加して、ファイルにディレクトリファイル名を書き込みます。

特定のディレクトリで使用すると、そのls | tee -a file.txt ディレクトリのリストが提供されます。

例:

file1.txt  file2.txt  file3.txt

ls一括後処理のためにコマンドの特定の文字列を最終出力に追加するにはどうすればよいですか?各ファイルに対して、特定のファイル名と特定のコマンドをコピーして貼り付ける必要があります。

例は次のとおりです。

ls | tee -a string1(FilenameFromDirectory)string2

出力

string1(file1.txt)string2
string1(file2.txt)string2
string1(file3.txt)string2

ベストアンサー1

始めと終わりに文字列を追加するのはとても簡単です。

$ ls
file1.txt  file2.txt  file3.txt
$ ls | sed -e 's/^/string1/' -e 's/$/string2/'
string1file1.txtstring2
string1file2.txtstring2
string1file3.txtstring2

括弧を使用しないことをお勧めします( )。ファイル名に特殊文字が含まれると、処理がより複雑になります。可能であれば、_代わりにまたはを使用してください。-括弧の使用に固執する場合は、次のようにできます。

$ ls | sed -e 's/^/string1(/' -e 's/$/)string2/'
string1(file1.txt)string2
string1(file2.txt)string2
string1(file3.txt)string2

重要:端末から結果を印刷したり、以前と同じようにファイルに転送したい場合は>問題ありません。teeただし、これを使用してファイルの名前を変更したり、ファイルをコピーまたは操作したい場合は機能しません。分析するlsこのアプローチは非常に脆弱であり、わずかに奇妙なファイル名がクラッシュする可能性があります。より安全なアプローチは次のとおりです。

$ for file in *; do
   printf 'string1(%s)string2\n' "$file"
done
string1(file1.txt)string2
string1(file2.txt)string2
string1(file3.txt)string2

おすすめ記事