-2

サイズの異なる固有のファイルを抽出するのが困難です。

質問: ディレクトリ内にいくつかのファイルが存在するとします。2 MB のファイルが 2 つ、4 MB のファイルが 4 つ、6 MB のファイルが 3 つあるとします。

ここで、すべてのファイルとそのサイズをチェックし、異なるサイズのファイルの最初の出現のみを印刷するスクリプトを実行する必要があります。

例えば。ファイル f1 を読み取り、そのファイルが 2MB の場合、ls -al of f1 を実行します。

次回は2MBサイズのファイルを取得するとスキップします

したがって、この場合、2 mb、4 mb、および 6 mb の異なるサイズの 3 つのファイルのみが印刷されます。

[sumit.gupta@abc ~]$ ll mytestfolder/
total 38972
-rw-rw-r-- 1 sumit.gupta sumit.gupta 2097152 Jan  6 23:26 f1
-rw-rw-r-- 1 sumit.gupta sumit.gupta 2097152 Jan  6 23:27 f2
-rw-rw-r-- 1 sumit.gupta sumit.gupta 4194304 Jan  6 23:28 f3
-rw-rw-r-- 1 sumit.gupta sumit.gupta 4194304 Jan  6 23:28 f4
-rw-rw-r-- 1 sumit.gupta sumit.gupta 6291456 Jan  6 23:28 f5
-rw-rw-r-- 1 sumit.gupta sumit.gupta 6291456 Jan  6 23:28 f6
-rw-rw-r-- 1 sumit.gupta sumit.gupta 4194304 Jan 13 11:11 f7
-rw-rw-r-- 1 sumit.gupta sumit.gupta 4194304 Jan 13 11:12 f8
-rw-rw-r-- 1 sumit.gupta sumit.gupta 6291456 Jan 13 11:12 f9

スクリプトで以下のコードを試しています:

#!/bin/bash

source="/home/sumit.gupta/mytestfolder/"

ls -ltr /home/sumit.gupta/mytestfolder | cut -d ' ' -f 5,10 | \
    head -n -1 > /tmp/abc.txt
ls -ltr /home/sumit.gupta/mytestfolder | cut -d ' ' -f5 | \
    uniq > /tmp/def.txt
grep -F -vf /tmp/def.txt /tmp/abc.txt > xyz.txt
4

2 に答える 2

0

の出力を処理することで噛まれないと仮定するとls(つまり、出力行のサイズが一貫して列 5 にあり、ファイル名に改行を埋め込むなどの奇妙なことをしない)、これは簡単に実行できることです。とawk

入力を一度だけ処理し、すでに確認されているサイズの記録を保持するため、同じサイズの後続のファイルが出力されません。

pax> ll mytestfolder/ | awk '!seen[$5] {print; seen[$5] = 1}'
-rw-rw-r-- 1 sumit.gupta sumit.gupta 2097152 Jan  6 23:26 f1
-rw-rw-r-- 1 sumit.gupta sumit.gupta 4194304 Jan  6 23:28 f3
-rw-rw-r-- 1 sumit.gupta sumit.gupta 6291456 Jan  6 23:28 f5
于 2016-01-13T06:13:32.103 に答える
0

「du -h directory_name/file_name」を使用してファイル サイズを取得し、入力ファイル サイズと比較できます。

于 2016-01-13T06:14:43.573 に答える