Kshスクリプトでfindコマンドを使用していますが、フルパスではなくファイル名のみを取得しようとしています。同様に、//severname/dir1/dir2/text.exeではなくtext.exeを返すようにします。
それをどうやって手に入れますか?明確にするために、ファイルが存在するディレクトリを知っています。特定の日付の前に作成されたものを取得しているだけなので、パス名は関係ありません。
あなたはそれを行うことができます:
find ..... |sed 's#.*/##'
しかし、それは本当に意味がありますか?同じファイル名で異なるディレクトリにある2つのファイルがある場合、それらをどのように区別できますか?
例えば.
you are in /foo
/foo/a.txt
/foo/bar/a.txt
[〜#〜] edit [〜#〜]
回答を編集して、テキストの書式設定を改善します。
コメントで説明したように、
これはワンショットで実行できます。
find ...|xargs tar -czf /path/to/your/target/a.gz
これにより、ファイルが検索され、ターゲットディレクトリにtar(a.gz)が作成されます。
GNU findを使用している場合、
find path -printf "%f\n"
ファイル名を出力し、パスを除外します。
find ... -exec basename {} \;
トリックも行います。
別の答えがあります。
find | awk -F/ '{print $NF}'
GNU findは-printf
を使用してこれをネイティブにサポートするため、必要なことは
find ... -printf '%f\n'