Řazení dle délky názvu souboru



Ahoj vespolek,uživatelé si ve svém tvůrčím rozletu pojmenovali spoustu souborů a složek snad podle první věty dokumentu, takže i s jejich cestou je název souboru pro kopírování příliš dlouhý. Nemáte nápad, jak vypsat soubory, jejichž délka přesahuje i s cestou 260 znaků? Sice bych mohl jít cestou FastCopy, ale byl bych raději, kdyby si je přejmenovali. Předem díky za tipy.
Tak přátelé, díky za snahu a tady je řešení:cmd /c dir /s /b |? {$\_.length -gt 260}Já si ten powershell nakonec zamiluju. ![](/Client.Images/smileys/2.gif)
<p>dlouhé řádky můžete rozdělit pomocí znaku <code>^</code>, pokud si pamatujete, že znak a nový řádek za ním jsou zcela odstraněny. takže, pokud by měl být mezera, kde prolomíte čáru, vložte mezeru. <em> ( <a href="https://stackoverflow.com/a/21000752/157247">více k tomu níže.</a> ) </em></p><p>příklad:</p><pre><code>copy file1.txt file2.txt </code></pre><p>bude psáno jako:</p><pre><code>copy file1.txt^ file2.txt </code></pre> <p>mohl bych o tom dál podrobně hovořit, ale tady není správné fórum (bývalý poradce pro život = vzdělávání v oblasti osvojování jazyků (la) a zpoždění la).</p><p>stručně řečeno: protože funkce textu je rozhodující pro to, co děláte, nejlepší volbou je poskytnout nějaký důraz na text, aniž by to narušilo jeho čitelnost. nejjednodušší způsob, jak toho dosáhnout, je velká písmena prvního písmena každého slova, jako v prvním příkladu.</p><p>ve skutečnosti je vaše současné pořadí příkladů do značné míry v pořadí od nejlepších po nejhorší možnosti.</p><p>je zřejmé, že je třeba vzít v úvahu také grafický design stránky - ale to tu nemáme, takže můj názor je založen čistě na tom, co čtenáři nejrychleji pochopí.</p><p>(zdá se, že počáteční přístup pouze k omezení počtu titulů je stále populárnější - např. nadpis - což je škoda. západní čtenáři tento vzhled snadno spojí se začátkem věty, takže očekávají, že další text bude okamžitě následovat. ne následovat - jako ve vašem případě - způsobí chvilkovou pauzu, úpravu. trvá to jen milisekundy, ale nastane, a pokud je to možné, doporučuji se jí vyhýbat.)</p><p>všimněte si, že rahulův ne-příklad by byl v téměř každém případě tím nejhorším rozhodnutím, jaké byste mohli učinit.</p> <p>obecným případem, který pracuje s jakýmkoli příkazem, který píše do stdout, je použití <code>xargs</code>, které vám umožní připojit ke konci příkazu libovolný počet argumentů z příkazového řádku:</p><pre><code>$ find … | xargs grep 'search' </code></pre><p>nebo vložte příkaz do řádku <code>grep</code> pomocí backticks nebo <code>$()</code>, které příkaz spustí a nahradí jeho výstup:</p><pre><code>$ grep 'search' $(find …) </code></pre><p>tyto příkazy nefungují, pokud názvy souborů obsahují mezeru nebo určité jiné „divné znaky“ (<code>\'"</code> pro xargs, <code>\[*?</code> pro <code>$(find …)</code>).</p><hr><p>ve specifickém případě <code>find</code> je však zabudována schopnost provádět program na zadaných argumentech:</p><pre><code>$ find … -exec grep 'search' {} \; </code></pre><p>všechno mezi <code>-exec</code> a <code>;</code> je příkaz k provedení; <code>{}</code> je nahrazen názvem souboru nalezeným <code>find</code>. tím se provede samostatný <code>grep</code> pro každý soubor; protože <code>grep</code> může mít mnoho názvů souborů a prohledávat je všechny, můžete změnit <code>;</code> na <code>+</code>, abyste zjistili, že všechny odpovídající názvy souborů předáte <code>grep</code> na jednou:</p><pre><code>$ find … -exec grep 'search' {} \+ </code></pre> <p>jedním z řešení by bylo použití javascriptu k přidání všech názvů odkazů, jakmile se stránka načte. to znamená, že stahování pro uživatele bude malé - i když v závislosti na tom, jak dlouho je řetězec skutečně, může zabrat více paměti. další možná nevýhoda: vyhledávače a některé čtečky obrazovky nemusí vidět názvy odkazů.</p><p>nejprve do svých odkazů přidejte třídu. držel jsem ji velmi krátkou, aby se nadýmání udržovalo co nejníže, ale možná budete chtít popisnější název třídy.</p><pre><code>&lt;a id="1" class="t" href="gothere1"&gt;my 1st link&lt;/a&gt; [...] &lt;a id="2000" class="t" href="gothere2000"&gt;my 2000th link&lt;/a&gt; </code></pre><p>pak přidejte tento javascript (netestovaný, ale měl by fungovat):</p><pre><code>&lt;script type="text/javascript"&gt; var titlestring = "a very long string common to all my links that i would like to have only once in the file in order to gain weight." var links = document.getelementsbyclassname('t'); for ( var l in link ) { l.setattribute('title', titlestring); } &lt;/script&gt; </code></pre> <p>nevidím s tím velký problém, i když existuje nebezpečí, že druhý řádek bude nesprávně interpretován - např. jako „sublistování“ na rozdíl od pokračování strouhanky. možná budete chtít zdůraznit pokračování pomocí vedoucího oddělovače a může také pomoci záporná textová odrážka (druhý řádek je potom odsazen).</p><p>navrhoval bych, že pokud je váš řádek „strouhanky“ v plné šířce a stále se obtéká přes více řádků, můžete mít v hierarchii příliš mnoho úrovní nebo jsou názvy strouhanky příliš dlouhé, z nichž každá může snížit použitelnost.</p> <p>děláme to úplně na <a href="http://smartystreets.com">smartystreets</a> . uživatelé nahrávají soubory s potenciálně miliony adres v nich a my je ověřujeme a standardizujeme/duplikujeme, atd. je to velmi náročné na procesor a dokonce i s kmenovými daty načtenými na jednotku ram, miliony adres zabere několik hodin (mimochodem, pro tuto částku je to velmi rychlé ...).</p><p>může být také důležité navrhnout uživatelské rozhraní, které může podporovat desítky úloh spuštěných paralelně. například naše serverové uzly se rozšiřují a můžeme podporovat mnoho souborů najednou. uživatelé budou potřebovat efektivní způsob, jak zobrazit stav a spravovat je. v roce 2011 jsme vylepšili naše uživatelské rozhraní a to je to, s čím jsme přišli.</p><hr><p> <a href="http://youtu.be/qdjsolatz4u?hd=1">zde je 30sekundové video</a> ukazující, jak celý proces funguje a jak rozhraní reaguje na aktuální stav úlohy (úloh). pokud chcete, můžete vyzkoušet sami od <a href="http://smartystreets.com/account/create">tato stránka</a> (zdarma, nebojte se ...).</p><hr><p>screenshoty pracovního postupu ... trvá asi 30 sekund až několik minut, v závislosti na vašich souborech.</p><p><img src="https://i.stack.imgur.com/egatr.png" alt="upload list"></p><p><em> nahrajte svůj seznam </em></p><p><img src="https://i.stack.imgur.com/kqkb9.png" alt="see the file uploading"></p><p><em> viz nahrání souboru </em></p><p><img src="https://i.stack.imgur.com/zv26q.png" alt="map the fields"></p><p><em> mapujte pole (probíhá automaticky; stačí potvrdit, že automatická mapa byla správná) </em></p><p><img src="https://i.stack.imgur.com/wodst.png" alt="stay up-to-date with the current status"></p><p><em> zůstaňte v kontaktu s tím, co se nyní děje </em></p><hr><p>všimněte si, že jakmile seznam začne zpracovávat, uživatel se může vrátit a nahrát více, které seznamy budou zpracovány paralelně v reálném čase. seznamy lze kdykoli zrušit/smazat a po dokončení je lze stáhnout. pokud byl seznam stažen alespoň jednou, zobrazí se zaškrtnutí.</p><p>toto je vlastně stárnoucí návrh, který plánujeme upgradovat. bude se to cítit spíš jako moderní, responzivní webová aplikace.</p><p>ještě stojí za zmínku, že jsme mnohokrát změnili vzhled stránky „dashboard“ účtu a tento návrh inicioval nejmenší volání/e-maily podpory a zákazníci to rádi viděli na první pohled. první uživatelé mají tendenci shledávat, že se s ním dostanou docela rychle.</p> <p>vaše příkazy se pokouší umístit nový dokument do <strong>root</strong> (<code>/</code>) vašeho stroje. chcete je přenést do adresáře <strong>home</strong> (protože nemáte oprávnění k zápisu do <code>/</code>). pokud je cesta k vašemu domu něco jako <code>/home/erez</code> zkuste následující:</p><pre><code>scp my\_file.txt user\_id@server:/home/erez/ </code></pre><p>cesta k domovskému adresáři můžete nahradit zkratkou <code>~/</code>, takže následující bude mít stejný účinek:</p><pre><code>scp my\_file.txt user\_id@server:~/ </code></pre><p>cestu můžete dokonce vynechat úplně na vzdálené straně; to znamená váš domovský adresář.</p><pre><code>scp my\_file.txt user\_id@server: </code></pre><p>to znamená, že zkopírujete soubor na plochu, který chcete přenést do <code>/home/erez/desktop/</code>:</p><pre><code>scp my\_file.txt user\_id@server:/home/erez/desktop/ </code></pre><p>nebo pomocí zkratky:</p><pre><code>scp my\_file.txt user\_id@server:~/desktop/ </code></pre><p>nebo pomocí relativní cesty na vzdálené straně, která je interpretována vzhledem k domovskému adresáři:</p><pre><code>scp my\_file.txt user\_id@server:desktop/ </code></pre><hr><h2>upravit:</h2><p>jak již bylo uvedeno @ckhan, musíte také zaměnit argumenty, musí to být</p><pre><code>scp from to </code></pre><p>pokud tedy chcete soubor zkopírovat <code>my\_file.txt</code> ze serveru <code>user\_id@server</code> na plochu byste měli vyzkoušet následující:</p><pre><code>scp user\_id@server:/path/to/my\_file.txt ~/desktop/ </code></pre><p>pokud soubor <code>my\_file.txt</code> se nachází ve vašem domovském adresáři na serveru, můžete znovu použít zkratku:</p><pre><code>scp user\_id@server:~/my\_file.txt ~/desktop/ </code></pre> <p>pomocí <a href="http://www.php.net/wordwrap">wordwrap</a> funkce. rozděluje texty do více řádků tak, že maximální šířka je ta, kterou jste zadali, a rozbíjí se na hranicích wordu. po rozdělení jednoduše vezmete první řádek:</p><pre><code>substr($string, 0, strpos(wordwrap($string, $your\_desired\_width), "\n")); </code></pre><p>jedna věc, kterou tento oneliner neřeší, je případ, kdy samotný text je kratší než požadovaná šířka. pro zvládnutí tohoto případu by měl člověk udělat něco jako:</p><pre><code>if (strlen($string) &gt; $your\_desired\_width) { $string = wordwrap($string, $your\_desired\_width); $string = substr($string, 0, strpos($string, "\n")); } </code></pre><hr><p>výše uvedené řešení má problém předčasného řezání textu, pokud obsahuje nový řádek před aktuálním bodem řezu. zde je verze, která tento problém řeší:</p><pre><code>function tokentruncate($string, $your\_desired\_width) { $parts = preg\_split('/([\s\n\r]+)/', $string, null, preg\_split\_delim\_capture); $parts\_count = count($parts); $length = 0; $last\_part = 0; for (; $last\_part &lt; $parts\_count; ++$last\_part) { $length += strlen($parts[$last\_part]); if ($length &gt; $your\_desired\_width) { break; } } return implode(array\_slice($parts, 0, $last\_part)); } </code></pre><p>také zde je testovací třída phpunit používaná k testování implementace:</p><pre><code>class tokentruncatetest extends phpunit\_framework\_testcase { public function testbasic() { $this-&gt;assertequals("1 3 5 7 9 ", tokentruncate("1 3 5 7 9 11 14", 10)); } public function testemptystring() { $this-&gt;assertequals("", tokentruncate("", 10)); } public function testshortstring() { $this-&gt;assertequals("1 3", tokentruncate("1 3", 10)); } public function teststringtoolong() { $this-&gt;assertequals("", tokentruncate("toooooooooooolooooong", 10)); } public function testcontainingnewline() { $this-&gt;assertequals("1 3\n5 7 9 ", tokentruncate("1 3\n5 7 9 11 14", 10)); } } </code></pre><h1><strong>upravit :</strong></h1><p>speciální znaky utf8 jako 'à' nejsou zpracovány. přidat 'u' na konci regexu pro zpracování:</p><p><code>$parts = preg\_split('/([\s\n\r]+)/u', $string, null, preg\_split\_delim\_capture);</code></p> Takže jste se ptali, jak zvládnout práci na násobku „úkolů“ najednou, ne? S výjimkou větvení.


Můžete mít více checkouts ze zdroje na lokálním počítači, suffixing název adresáře s názvem lístku, na kterém pracujete. Jen se ujistěte, aby se změny ve správném adresáři, v závislosti na úkolu ...


Směšování více úkolů v jedné pracovní kopii / commit může být velmi matoucí, zvláště pokud někdo potřebuje, aby svou práci zkontrolovat později. <p>moje doporučení by bylo použít <code>query\_posts()</code> k úpravě dotazu tak, aby <code>orderby=title</code> a <code>order=asc</code> ... toto vrátilo stejné výsledky jako váš první dotaz, ale s příspěvky <a href="http://codex.wordpress.org/function\_reference/query\_posts#orderby\_parameters">seřazenými abecedně podle názvu</a> .</p>