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

検索出力で相対パスのみを強制するにはどうすればよいですか?

%P を使用できます -printf の形式 ディレクティブ:

find ${rootDir} -name '*.doc' -printf "%P\n"

あなたの例に表示されます:

subdir/test.doc
second.doc

次に、この find を使用できます for のリスト 次のように、exec コマンドを実行するための式:

for f in $( find ${rootDir} -name '*.doc' -printf "%P\n" );
do
    tar rvf docs.tar ${f}
done

find を実行すると find で絶対開始点を指定しないでください。 のオプション、それは tar への相対パスを出力します それが構築するコマンド呼び出し。そのように:

cd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;

現在の作業ディレクトリを永久に変更したくなく、bash を使用している場合 またはあなたができるシェルと同様

pushd $rootDir
find . -name '*doc' -exec tar rvf docs.tar {} \;
popd

pushd/popd はすべてのシェルに存在するわけではないので、必要に応じてマニュアル ページを確認してください。それらは bash には存在しますが、基本の sh 実装には存在しないため、 /bin/bash を明示的に使用している間 スクリプトが /bin/sh を要求する場合は信頼できません 代わりに (これは、bash の拡張機能を持たない小さなシェルにマップされる可能性があるため)


Linux
  1. ツリー出力のみのディレクトリを作成するにはどうすればよいですか?

  2. ディレクトリの md5 チェックサムを計算するにはどうすればよいですか?

  3. tar の絶対パスを除外するにはどうすればよいですか?

  1. Linuxコマンド:テキストファイルのみを「検索」する方法は?

  2. ディレクトリ全体で dos2unix を実行するにはどうすればよいですか?

  3. Linux コマンドを使用してシェルのバージョンを確認するにはどうすればよいですか?

  1. Linux でマルチパート tar ファイルを作成するにはどうすればよいですか?

  2. root にならずに RPM をインストールするにはどうすればよいですか?

  3. 変更された dmesg 出力を確認するにはどうすればよいですか?