1

そうするとfind ./、次のような結果が得られます。

/Volumes/FulfilmentArray//.Trashes/1060/ffmpeg2pass-0.log.mbtree.temp

find ./ファイル名とコンテナフォルダのみを返すコマンドを実行する方法はありますか?上記の場合、次のようになります。

1060/ffmpeg2pass-0.log.mbtree.temp
4

4 に答える 4

2
find ./ | rev | cut -d/ -f-2 | rev
于 2013-01-24T23:38:16.717 に答える
2
find ./ | rev | cut -d/ -f-2 | rev

少しの説明が大いに役立つかもしれません。使用したコマンド:

したがって、前のコードは例を使用して次のことを行っています。

  1. 現在のディレクトリの場所を基準にしたすべてのファイルへのパスを出力します

    ./Machine Learning - Stanford/Self-notes/08-10.txt
    
  2. パス文字列を反転します

    txt.01-80/seton-fleS/drofnatS - gninraeL enihcaM/.
    
  3. 最初の部分を残して2番目のスラッシュで文字列を切り取ります(これには、検索が実行されたフォルダーを基準にした、ファイル名とフォルダーが含まれます)

    txt.01-80/seton-fleS --separated here-- /drofnatS - gninraeL enihcaM/.
    
  4. 結果を反転します

    Self-notes/08-10.txt
    
于 2013-01-24T23:54:50.530 に答える
1

awkをsedに交換できると確信しています。ファイル名を言ったので「-typef」フラグを追加しましたが、ディレクトリも必要な場合は削除してください。

find ./ -type f|awk -F'/' '{ print $(NF-1)"/"$NF }'
于 2013-01-24T23:42:53.437 に答える
0

これは、それを実行する1つの方法である可能性があります。

find . | awk -F "/" '{ if (NF > 2) { print $(NF-1) "/" $NF; } else { print $NF; }}'
于 2013-01-24T23:45:37.583 に答える