find、sed、awk、cut、またはその他のコマンドを使用してファイル名のリストのみを取得し、ディレクトリとサブディレクトリを削除する方法。
例:すべてのメディアファイルのリストを取得するためにfindを使用します。
find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" -o -name "*.flv" -o -name "*.mp4" \) -exec ls {} +
出力:
/var/warehouse/movies/Blade/The.Bucket.List[2007]DvDrip-aXXo.avi
/var/warehouse/movies/Blade/The Lion King (1994).mkv
/var/warehouse/movies/Blade/The.Pursuit.of.Happyness.2006.DVD5.720p.BluRay.x264-REVEiLLE.en.mkv
/var/warehouse/movies/Blade/The Secret [Dual Audio] Upscaled 720p Ripped by FÅM€.mkv
/var/warehouse/movies/Blade/Yes.Man.2008.DvDRip-FxM.avi
/var/warehouse/movies/Bollywood/Bhaag Milkha Bhaag - DVDScr - XviD - 1CDRip - [DDR].avi
私が望む出力は次のとおりです。
The.Bucket.List[2007]DvDrip-aXXo.avi
The Lion King (1994).mkv
The.Pursuit.of.Happyness.2006.DVD5.720p.BluRay.x264-REVEiLLE.en.mkv
The Secret [Dual Audio] Upscaled 720p Ripped by FÅM€.mkv
Yes.Man.2008.DvDRip-FxM.avi
Bhaag Milkha Bhaag - DVDScr - XviD - 1CDRip - [DDR].avi
答え1
あなたはすでにそれらのほとんどを持っています。あなたはあなたのものを次に-exec
変更するだけです。-printf
find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" -o -name "*.flv" -o -name "*.mp4" \) -printf "%f\n"
%f
パスを無視し、見つかったファイルの名前を印刷します。
などのファイルも一致するように(大文字と小文字を区別する)に-name
変更することを検討することもできます。-iname
*.Avi
*.AVI
答え2
POSIX的に:
find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" \
-o -name "*.flv" \
-o -name "*.mp4" \) \
-exec basename {} \;
または、次のfind
ものを組み合わせることができますsed
。
find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" \
-o -name "*.flv" \
-o -name "*.mp4" \) | sed -e 's!.*/!!'