GNU/Linux >> Belajar Linux >  >> Linux

Menggunakan 'temukan' untuk mengembalikan nama file tanpa ekstensi

Berikut solusi sederhananya:

find . -type f -iname "*.ipynb" | sed 's/\.ipynb$//1'

Untuk mengembalikan hanya nama file tanpa ekstensi, coba:

find . -type f -iname "*.ipynb" -execdir sh -c 'printf "%s\n" "${0%.*}"' {} ';'

atau (menghilangkan -type f mulai sekarang) :

find "$PWD" -iname "*.ipynb" -execdir basename {} .ipynb ';'

atau:

find . -iname "*.ipynb" -exec basename {} .ipynb ';'

atau:

find . -iname "*.ipynb" | sed "s/.*\///; s/\.ipynb//"

namun memanggil basename pada setiap file bisa jadi tidak efisien, jadi saran @CharlesDuffy adalah:

find . -iname '*.ipynb' -exec bash -c 'printf "%s\n" "${@%.*}"' _ {} +

atau:

find . -iname '*.ipynb' -execdir basename -s '.sh' {} +

Untuk mencetak jalur lengkap dan nama file (tanpa ekstensi) di baris yang sama, coba:

find . -iname "*.ipynb" -exec sh -c 'printf "%s\n" "${0%.*}"' {} ';'

atau:

find "$PWD" -iname "*.ipynb" -print | grep -o "[^\.]\+"

Untuk mencetak jalur lengkap dan nama file pada baris terpisah:

find "$PWD" -iname "*.ipynb" -exec dirname "{}" ';' -exec basename "{}" .ipynb ';'

Linux
  1. Bagaimana Cara Mengganti Nama Banyak File Menggunakan Find?

  2. Memanipulasi {} Mengembalikan String Dari Find -exec?

  3. temukan dan salin file menggunakan Bash

  1. Menemukan file yang dapat dieksekusi menggunakan ls dan grep

  2. Secara rekursif menemukan file dengan ekstensi tertentu

  3. Menghapus file dengan rm menggunakan find dan xargs

  1. Temukan apakah file ada atau tidak di HDFS menggunakan skrip shell

  2. Bagaimana cara menghapus file tanpa menggunakan rm?

  3. Paksa menggali untuk menyelesaikan tanpa menggunakan cache