ターミナルで拡張子なしでファイル名を一覧表示しますか?

ターミナルで拡張子なしでファイル名を一覧表示しますか?

私は Mac を使用しています。フォルダー内のファイルのリストを、リストに拡張子を含めずに取得する必要があります。これは、Web サイトのインポート用に製品のリストが必要であり、都合よく画像名が製品名と同じであるためです。ただし、リストには拡張子を含めないでください。

ターミナルを使用してファイル名のリストを取得し、テキスト ファイルにコピーできました。唯一の問題は、ファイル名に拡張子「.jpg」が含まれていることです。ターミナルから取得したリストを使用して、テキスト ファイルを調べ、各ファイル名 (1000 個以上あります) から手動で拡張子を削除する必要がありますが、これには長い時間がかかります。もっと簡単な方法はありますか? ターミナルで拡張子なしのファイル名のリストを表示して、リストにコピーして貼り付けることはできますか? または、これらのファイルから拡張子を削除してから、ターミナルでリストし、名前をコピーできますか? 別の方法はありますか? 混乱しています。私はプログラマーではなく、Web サイトの設計者です。

誰かがこれを助けてくれることを願っています。皆さんありがとう!

答え1

借用元スタックオーバーフロー:

ls -1 | sed -e 's/\..*$//'

重複としてフラグを立てようとしましたが、機能しませんでした。

ファイル拡張子がわかっている場合の私の独自の解決策の 1 つです。

find -type f -exec basename -s '.jpg' "{}" \;

したがって、ディレクトリではなくすべてのファイルを検索し - type fbasenameそれぞれに対して実行します。 を使用する-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行末でなくても、の出現を検出します。

関連情報