1,000KBを超えるディレクトリにPDFファイルのみを分割するシェルスクリプトを作成するにはどうすればよいですか? pdftkや他のダウンロード可能なツールを使用しない
PDFをバイト単位で分割したいです。私がダウンロード可能なツールを使用することに反対する理由は、同僚がいかなる種類のダウンロードも許可しないことを明らかにしたからです。
答え1
mkdir split-files
find . -maxdepth 1 -type f -size +10000000c -exec split -b 10000000 {} split-files/{}. ';'
現在のディレクトリで、10000000バイト(1000KB)より大きいファイルを見つけます。各部分が1000KBを超えないように、これらのファイルを分割します。分割はバイト境界で発生します。
split-files
分割ファイルは、元のファイルと同じ名前と2文字のサフィックスを追加して新しいディレクトリに保存されます。
元のファイルは変更されていません。
答え2
次のコマンドは、現在のディレクトリで1000 KB()を超えるすべてのファイルを検索します.
。
find . -type f -size +1000k
|
結果を各ファイルに送信し、次のより大きいすべてのファイルを一覧表示するなどのxargs
コマンドを実行できます。1000KB
find . -type f -size +1000k | xargs ls -l
コマンドを実行するには、split
上記のコマンドをユーザーのコマンドに置き換える必要があります。ls -ls
split
答え3
分割コマンドを使用して複数の部分に分割します。これにより、ソースファイルで選択した寸法で部品が作成されます。
split --bytes=1000K MyBigFile.jpg filepart
次の部分はあなたの名前で始まるランダムな名前になります。
このファイルは次のとおりです。
filepartazza
filepartczaa
filepartqqzs
次のように簡単に組み合わせることができます。
cat filepart* >NewBigPicture.png
私はディレクトリ内のすべてのファイルを検索してサブディレクトリに分割する完全なスクリプトを作成しました。
スクリプトのパラメータ:「ファイルを含むフォルダ」「K単位の一致するサイズ」「サブディレクトリとセクションの名前」
呼ぶ:./script.sh "/media/exchange/" "1000" "Parts"
#!/bin/bash
SplitFiles() {
File=""
PartFolder=""
IFS=$'\n'
for File in `ls -lh --block-size=K $Folder | grep -v /`
do
Filename=$(echo $File | awk '{ print $1="";$2="";$3="";$4="";$5="";$6="";$7="";$8=""; print $0 }')
Filename=$(echo $Filename | awk '{$1=$1};1')
Filezise=$(echo $File | awk '{ print $5 }' | tr -d K)
if [[ -z "$Filezise" || "$Filezise" -lt "$MatchSize" ]]; then
:
else
PartFolder="$Folder""$Partname""Folder"
mkdir -p "$PartFolder"
split --bytes=1000K $Folder$Filename $PartFolder/$Partname
fi
done
}
Folder="$1"
MatchSize="$2"
Partname="$3"
SplitFiles "$Folder" "$MatchSize" "$Partname"
サブディレクトリを作成し/media/exchange/Parts
、その中にすべての部品を保存します。