拡張子(.gz)を含むディレクトリのファイル名を印刷しようとしています。現在、絶対パスを印刷する次のシェルスクリプトがあります。ファイル名だけを印刷したいです。
誰でもこれについてアドバイスできますか?私はさまざまなアプローチを試しました。
#!/bin/bash
sourceFolder=/Users/rojadhanavath/Desktop/app/logs/*.gz
sleepTimeinMinutes=200
cd $sourceFolder
for f in $sourceFolder do
echo " printing the file name $f" done
現在の出力は次のとおりです。
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 10.gz
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 11.gz
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 12.gz
printing the file name
/Users/rojadhanavath/Desktop/app/logs/app-json.log copy 2.gz printing
the file name /Users/rojadhanavath/Desktop/app/logs/app-json.log copy
3.gz
私はファイル名だけが欲しいです:
例えばapp-json.log copy 10.gz
答え1
次のデフォルト名を使用できます$f
。
for f in $sourceFolder; do
echo " printing the file name $(basename $f)"
done
またはすでにthisを使用しているので、cd $sourceFolder
次のように動作します。
for f in *.gz; do
echo " printing the file name $f"
done
答え2
正解は@laktakです。しかし、ここに別の方法があります:
for f in "$sourceFolder"; do
echo " printing the file name ${f##*/}"
done
答え3
ファイル拡張子の部分は簡単です。そのようなことはありません。この概念を処理するのに役立つツール(例basename
:)がありますが、存在しないので無視してください。必要に応じてこのツールを使用してくださいdirname
。
例えば
echo " printing the file name $(dirname "$f")"