GNU/Linux >> Linux の 問題 >  >> Linux

「find」を使用して拡張子なしのファイル名を返す

簡単な解決策は次のとおりです:

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

拡張子のないファイル名のみを返すには、次を試してください:

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

または (-type f を省略) これから) :

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

または:

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

または:

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

ただし、basename を呼び出す @CharlesDuffy の提案は次のとおりです。

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

または:

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

フル パスとファイル名 (拡張子なし) を同じ行に出力するには、以下を試してください:

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

または:

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

フルパスとファイル名を別々の行に出力するには:

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

Linux
  1. 検索から文字列を返す{}を操作します-exec?

  2. Bash を使用してファイルを検索してコピーする

  3. ls と grep を使用して実行可能ファイルを見つける

  1. 特定の拡張子を持つファイルを再帰的に見つける

  2. find と xargs を使用して rm でファイルを削除する

  3. シェル スクリプトを使用して HDFS にファイルが存在するかどうかを調べる

  1. すべてのファイルを削除せずにgzipする

  2. ~/.bashrc を bash コマンドを使わずに復元する

  3. rm を使わずにファイルを削除するには?