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

bashでファイルをファイルタイプ別にフォルダにソートする方法(「file」コマンドを使用)?

このようなものはどうですか:


mkdir -p `file -b --mime-type *|uniq`
for x in `ls`
do
        cp $x `file -b --mime-type $x`
done

cp を使用していますが、ディレクトリでは機能しません。


ダダムの回答調整:

#!/bin/bash

file --mime-type -F"&" [YOUR PATH]/* > filetypes.txt
mkdir -p `cut -f2 -d"&" filetypes.txt | sed 's/[ ,:]//g' | sort -u`
IFS=$'\n'
for x in `cut -f1 -d"&" filetypes.txt`
do
  mv "$x" `file -b --mime-type "$x" | sed 's/[ ,:]//g'`
done 

この回答は file を実行しません ファイルごとにコマンドを複数回実行します。これは不要です

file  -N --mime-type -F"-&-" * | awk -F"-&-" 'BEGIN{q="\047"}
{
  o=$1
  gsub("/","_",$2);sub("^ +","",$2)
  if (!($2  in dir )) {
    dir[$2]
    cmd="mkdir -p "$2
    print cmd
    #system(cmd) #uncomment to use
  }
  files[o]=$2
}
END{
 for(f in files){
    cmd="cp "q f q"  "q files[f]"/"f".jpg" q
    print cmd
    #system(cmd) #uncomment to use
 }
}'

同様に、連想配列を使用して bash4+ スクリプトで実行できます。


Linux
  1. Linuxでfdコマンドを使用してファイルを検索する方法

  2. Sort コマンドを使用して Linux でファイルをソートする方法

  3. すべてのサブディレクトリ内のすべてのファイルを bash の 1 つの圧縮ファイルに gzip する方法

  1. Linuxでの並べ替えコマンドと例

  2. Bashに入力されたすべてのコマンドとすべてのファイル操作をログに記録する方法は?

  3. Readynas Duo V1でファイルをアルファベット順のフォルダに並べ替えるBashスクリプト?

  1. Bashでファイルを1行ずつ読み取る方法

  2. 検索コマンドを使用してLinuxでファイルを検索する方法

  3. SCPコマンドを使用してファイルを安全に転送する方法