-2

デスクトップに「images」というフォルダがあります。

内部には「Flower_Shape」、「Smile_Shape」、「Dog_Shape」などと呼ばれるサブフォルダーがたくさんあり、各フォルダーには「Variant1.PNG」、「Variant2.PNG」、「Variant3.PNG」の 3 つの画像が含まれています。次に、さまざまな名前で呼ばれる他のファイル形式がありますが、.png で終わらず、「.psd」などで終わります...

これらの何百ものフォルダーのすべてのコンテンツを取得し、名前を「Variant1.png」からそれが含まれていたフォルダーの名前に変更しながら、それらをすべて 1 つのフォルダーに移動するにはどうすればよいですか (たとえば、「Variant1.png」 「Flower_Shape」フォルダ内の「.png」は「Flower_Shape-Variant1.png」という名前に変更されます)、「.png」で終わらないすべてのファイルを削除します。

私の最初の主な質問は、このようなことを行うためにどの言語を使用するかということです。それはPERLでしょうか?それが確立された後、これを行う方法についてのヒントはありますか... if ステートメントを使用した for ループだけで十分だと思いますが、perl (またはその他の言語については何も知りません)その点については、自分のコンピューターでファイルを変更することに対処してください)

ありがとう!

4

4 に答える 4

2

Mac OS X には、さまざまなスクリプト言語が付属しています。PerlPythonPHPRuby、およびBASHが付属しています。

Mac OS X にはAutomatorも付属しています。

あなたは何を選ぶべきですか?

  • プログラミングの学習に本当に興味があるなら、Bash から始めることをお勧めします。BASH はコマンド シェルと呼ばれるものです。プロンプトでコマンドを入力すると、それが実行されます。Unix シェルは強力なツールであり、BASH シェルには使用できる多くの制御構造が含まれています。BASH では、findコマンドと コマンドを使用しmvてループを記述し、必要なことを実行できます。
    .
    シェル スクリプトの機能は限られています。それらは完全なサービス言語であるとは想定されておらず、謝罪もしていません。数十行以上、またはより複雑な制御が必要な場合は、スクリプト言語に切り替える必要があります。

  • 私は Perl プログラマーですが、プログラミングの方法を学ぶことに本当に興味がある場合は、Python を学ぶことをお勧めします。Python はおそらく最も人気のある言語であり、その使用は確実に増えています。

  • Perl は、その構文構造の多くがシェル スクリプト言語に由来するため、優れた言語です。聞いたことはありますが、Perl は依然として非常に人気のある言語です。Perl の方が構文規則が緩く、オブジェクト指向である必要がないため、Python よりも Perl を好む人が多いことがわかりました。これも Perl の大きな問題です。ほとんどの Perl プログラマーは、基本的なハッキング段階を通過することはありません。Perl は、非常に多くのひどい Perl スクリプトが存在するため、維持するのが難しい言語であるという評判があります。

  • Ruby は Perl や Python ほど人気が​​ありませんが、ファンはいます。Ruby の大きな力は Ruby on Railsと呼ばれるものです。Railsは、Web ベースのアプリケーションを迅速に構築できるプログラミング フレームワークです。まず Ruby を学び、次に Rails コンポーネントを学びます。

  • PHP はかつて、Web をまとめるための接着剤でした。新しい Web 開発プラットフォームが登場するにつれて、その人気は近年低下していると思います。PHP はプログラミングのモブ ルールです。他のすべての言語とは異なり、言語を形成する単一のチャンピオンがいないため、多くの残骸が開発されています。ずさんで、維持するのが難しい場合があります。
    .
    それでも、多くの Web ベースのフォーラムや Joomla のようなコンテンツ管理システムの基盤となっています。結局のところ、PHP は Web ページ内で動作するように設計されています。

  • スクリプト プログラミングを学びたくない場合は、Automator を試す必要があります。グラフィカル ユーザー インターフェイスが付属しており、あらゆる種類のタスクを実行するプログラムを構築できます。Automator を始めた人々は、Automator を使って素晴らしいことを成し遂げました。

どちらを選択しても、Web でいくつかのチュートリアルや情報を見つけることができますが、本当に学びたい場合は、適切なマニュアルを入手する必要があります。O'Reilly and Associatesには、コンピューティングとインターネットに関する長い歴史があります。Tim O'Reilly (会社の頭脳) は 1978 年からコンピューターのマニュアルを作成しています。私の本はほとんどすべて O'Reilly の本です。マニングは別の 1 つで、他にも数十あります。Amazon が廃業に追い込む前に本物の書店に行き、好きな本を探して本棚を熟読してください。

于 2013-08-06T19:05:56.167 に答える
0

私はこのコードを使用してこれを達成することができました(そして「グロブ」関数内の値を/ / /の異なるレベルに手動で変更します)

#!/usr/bin/perl

foreach my $files (glob ('*/*/*')) {
    use strict;
    use File::Basename;
    use Cwd 'abs_path';

    my $f = "$files";  
    my $d = basename(dirname(abs_path($f)));

    my($file, $dir, $ext) = fileparse($files);

    my $initialName = "$dir$file";
    my $finalName = "$dir$d$file";

    print("$initialName --> $finalName \n");

    rename($initialName, $finalName);
}

次に、次のように、移動機能を使用してファイルを新しいフォルダーに移動するのと同じくらい簡単でした。

#!/usr/bin/perl

foreach my $files (glob ('*/*/*')) {
    use strict;
    use File::Basename;
    use Cwd 'abs_path';
    use File::Copy;

    my $f = "$files";  
    my $d = basename(dirname(abs_path($f)));

    my($file, $dir, $ext) = fileparse($files);

    my $initialLocation = "$dir$file";
    my $finalLocation = "AllFiles/$file";

    print("$finalLocation\n");

    move($initialLocation,$finalLocation);
}
于 2013-08-06T20:26:26.400 に答える