私は Mac を使用しています。フォルダー内のファイルのリストを、リストに拡張子を含めずに取得する必要があります。これは、Web サイトのインポート用に製品のリストが必要であり、都合よく画像名が製品名と同じであるためです。ただし、リストには拡張子を含めないでください。
ターミナルを使用してファイル名のリストを取得し、テキスト ファイルにコピーできました。唯一の問題は、ファイル名に拡張子「.jpg」が含まれていることです。ターミナルから取得したリストを使用して、テキスト ファイルを調べ、各ファイル名 (1000 個以上あります) から手動で拡張子を削除する必要がありますが、これには長い時間がかかります。もっと簡単な方法はありますか? ターミナルで拡張子なしのファイル名のリストを表示して、リストにコピーして貼り付けることはできますか? または、これらのファイルから拡張子を削除してから、ターミナルでリストし、名前をコピーできますか? 別の方法はありますか? 混乱しています。私はプログラマーではなく、Web サイトの設計者です。
誰かがこれを助けてくれることを願っています。皆さんありがとう!
答え1
借用元スタックオーバーフロー:
ls -1 | sed -e 's/\..*$//'
重複としてフラグを立てようとしましたが、機能しませんでした。
ファイル拡張子がわかっている場合の私の独自の解決策の 1 つです。
find -type f -exec basename -s '.jpg' "{}" \;
したがって、ディレクトリではなくすべてのファイルを検索し - type f
、basename
それぞれに対して実行します。 を使用する-s
と、削除する既知のサフィックスを指定できます。
別の代替解決策:SUから
答え2
ファイル「in.txt」にファイルのリストがある場合は、このスクリプトを実行して、「out.txt」内の拡張子のないファイルのリストを取得します。
#!/bin/bash
while read fullfile; do
filename=$(basename "$fullfile")
filename="${filename%.*}"
echo $filename >> out.txt
done <in.txt
答え3
vi
(または)を使用していますvim
か?使用している場合は、JPEGファイル名がすでにテキストファイルにあるので、そのファイルをvi
/で編集しvim
て次のように入力するのが最も簡単な方法です。
:%s/\.jpg$//
これは、ファイル内の各行で、.jpg
行末に がないか探し、それを削除して何もない行に置き換えるというものです。 で終わらない行があっても.jpg
問題ありません。それらは無視されます(スキップされます)。1行に複数の製品名(ファイル名)がある場合、
hammer.jpg screwdriver.jpg wrench.jpg
を省略して、次のように$
追加しますg
:%s/\.jpg//g
削除します全て.jpg
行末でなくても、の出現を検出します。