renomear arquivos e diretórios de forma recursiva no ubuntu/bash
<p>eu quero renomear todos os arquivos e diretórios que contêm o word &quot;especial&quot; para &quot;regular&quot;. ele deve manter a diferenciação entre maiúsculas e minúsculas, portanto, &quot;especial&quot; não se tornará &quot;regular&quot;.</p><p>como posso fazer isso em bash recursivamente? </p>
<p>tente fazer isso (requer <code>bash --version</code>&gt; = 4):</p><pre><code>shopt -s globstar rename -n 's/special/regular/' ** </code></pre><p>remova a opção <code>-n</code> quando seus testes estiverem ok</p><p><img src="https://pix.toile-libre.org/upload/original/1377510865.png" alt="warning"> <strong>existem outras ferramentas com o mesmo nome que podem ou não ser capazes de fazer isso, então seja cuidadoso.</strong><br> <br/></p><p>se você executar o seguinte comando (<code>gnu</code>)</p><pre><code>$ file "$(readlink -f "$(type -p rename)")" </code></pre><p>e você tem um resultado como </p><pre><code>.../rename: perl script, ascii text executable </code></pre><p>e não contendo:</p><pre><code>elf </code></pre><p>então esta parece ser a ferramenta certa =)</p><p>se não, para torná-lo o padrão (geralmente já o caso) em <code>debian</code> e derivado como <code>ubuntu</code>:</p><pre><code>$ sudo update-alternatives --set rename /path/to/rename </code></pre><p>(substitua <code>/path/to/rename</code> pelo caminho do seu comando <code>perl's rename</code>.</p><hr><p>se você não tiver este comando, procure em seu gerenciador de pacotes para instalá-lo ou <a href="https://metacpan.org/module/rmbarker/file-rename-0.20/rename.pl">faça-o manualmente</a> </p><hr><p>por último, mas não menos importante, esta ferramenta foi originalmente escrita por larry wall, o pai do perl.</p>
<p>então o que eu fiz é isso:</p><p>eu criei um arquivo de texto simples e escrevi o seguinte script bash para um programa de tradução em latim que eu uso, chamado <a href="http://archives.nd.edu/whitaker/words.htm">words</a> :</p><pre><code>#! /bin/bash cd ~/latin/latin.words/ ./words </code></pre><p>depois de salvá-lo na minha pasta pessoal, tornei-o executável, o que pode ser feito de duas maneiras. cliquei com o botão direito, escolha <strong>properties-&gt; permissions</strong>, e marque a caixa <strong>"execute"</strong> para seu nome de usuário. ou eu poderia ter usado a linha de comando e inserido <code>chmod +x file.name</code>.</p><p>então eu cliquei com o botão direito no painel e selecionei <strong>add to panel</strong>, selecione <strong>custom application launcher.</strong> eu digitei o nome, neste caso <strong>words</strong>, e o caminho para o script que acabei de escrever no campo <strong>command</strong>. como <code>words</code> é um programa de linha de comando, selecionei <strong>program in terminal</strong> no menu suspenso. então, cliquei no ícone e selecionei um apropriado, e com isso terminei de adicioná-lo ao painel.</p><p>em seguida, cliquei em <strong>system-&gt; preferences-&gt; main</strong> menu, selecionei a pasta na qual queria colocar o iniciador de menu e, em seguida, cliquei em <strong>add item.</strong> eu então repeti o processo i acabado de executar, acima.</p><p>e agora eu tenho um lançador personalizado que funciona para um programa que deve ser executado a partir de seu próprio diretório, tanto no meu painel quanto no menu!</p> lembre que somente quem tem permissão no arquivo ou diretório poderá alterar as permissões, quando ocorrer erros, verifique seus direitos sobre o arquivo ou diretório com o comando "ls -l" ou faça com poderes de root. 

tendo em mente que o conceito de binário significa 0 = desligado e 1 = ligado, vejamos como fica na tabela abaixo:


 rwx
 0 - 000
 1 - 001
 2 - 010
 3 - 011
 4 - 100
 5 - 101
 6 - 110
 7 - 111



onde "rwx" são as permissões de um arquivo, ou seja:


 r=read (leitura)
 w=write (gravação, alteração, deleção)
 x=execute (execução)



feito isso, sabemos que um arquivo ou diretório possui 3 modos de permissão. uma permissão para o dono do arquivo ou seja, quem o criou, uma outra permissão para o grupo do usuário dono do arquivo, e outra permissão para qualquer outro usuário ou grupo. 

sabendo disso, temos a tabela final abaixo:


 dono grupo outros
 rwx rwx rwx
 0 - 000 000 000
 1 - 001 001 001
 2 - 010 010 010
 3 - 011 011 011
 4 - 100 100 100
 5 - 101 101 101
 6 - 110 110 110
 7 - 111 111 111



exemplo: temos um diretório qualquer chamado mp3 que eu quero permissão total para o dono [eu], permissão de apenas leitura para o meu grupo e nenhuma permissão para o resto do mundo. o comando para executar essa ação é o chmod (em minúsculo mesmo). 

$ chmod 740 /mp3 <p>parece que você pode restaurar da máquina do tempo para um sistema de arquivos que não diferencia maiúsculas e minúsculas de um sistema sensível a maiúsculas e minúsculas. veja os fóruns da apple <a href="https://discussions.apple.com/thread/2624756?start=15&amp;tstart=0">aqui</a> .</p><p>gostaria de <em> altamente </em> recomendar que você realize um backup total do sistema usando <a href="http://bombich.com/">carbon copy cloner</a> .</p><p>o carbon copy cloner suporta a restauração de um sistema que não diferencia maiúsculas e minúsculas de um caso sensível - veja <a href="http://help.bombich.com/discussions/questions/198-can-ccc-backup-a-case-sensitive-volume-and-restore-to-a-case-insensitive-volume">this</a> .</p><p>na verdade, eu recomendaria ccc sobre tm, mas você deve usar o que você se sente confortável. eu também inicializo a imagem do ccc e certifico-me de que todas as minhas coisas estavam lá antes de limpar minha unidade interna e fazer a restauração. ccc faz um backup inicializável (que é outra razão é incrível).</p> <p>para encontrar os 10 maiores arquivos (linux/bash):</p><p><code>find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -i{} du -sh {}</code></p><p>para encontrar os 10 maiores diretórios:</p><p><code>find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -i{} du -sh {}</code></p><p>a única diferença é <code>-type {d:f}</code>.</p><p>manipula arquivos com espaços nos nomes e produz tamanhos de arquivos legíveis por humanos na saída. maior arquivo listado por último. o argumento a seguir é o número de resultados que você vê (aqui os 10 maiores).</p><p>existem duas técnicas usadas para manipular espaços em nomes de arquivos. o <code>find -print0 | xargs -0</code> usa delimitadores nulos em vez de espaços, e o segundo <code>xargs -i{}</code> usa novas linhas ao invés de espaços para finalizar itens de entrada.</p><p>exemplo:</p><pre><code>$ find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -i{} du -sh {} 76m ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz 76m ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz 76m ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz 76m ./tmp/projects/onthisday/onthisday.tar.gz 114m ./dropbox/snapshots/weekly.tgz 114m ./dropbox/snapshots/daily.tgz 114m ./dropbox/snapshots/monthly.tgz 117m ./calibre library/robert martin/cc.mobi 159m ./.local/share/trash/files/funky chicken.mpg 346m ./downloads/the walking dead s02e02 ... (dutch subs nl).avi </code></pre> <p>adicione o seguinte a ~/.bashrc</p><pre><code># avoid duplicates histcontrol=ignoredups:erasedups # when the shell exits, append to the history file instead of overwriting it shopt -s histappend # after each command, append to the history file and reread it prompt\_command="${prompt\_command:+$prompt\_command$'\n'}history -a; history -c; history -r" </code></pre> <p>para reconstruir o cache de comandos executáveis, use <code>rehash</code> ou <code>hash -rf</code>.</p><p>verifique se você não desmarcou o <code>hash\_list\_all</code> opção (causa menos acessos ao disco, mas faz com que o cache seja atualizado com menos frequência).</p><p>se não quiser digitar um comando, você pode dizer ao zsh para não confiar no cache ao concluir, colocando a seguinte linha no seu <code>~/.zshrc</code>¹:</p><pre><code>zstyle ":completion:*:commands" rehash 1 </code></pre><p>existe um custo de desempenho, mas hoje é insignificante em uma configuração típica de área de trabalho. (não é se você tiver <code>$path</code> no nfs ou em um sistema sem memória ram.)</p><p>o comando <code>zstyle</code> está documentado na página do manual <code>zshmodule</code>. os valores dos estilos estão documentados nas páginas de manual <code>zshcompsys</code> e <code>zshcompwid</code>, ou você pode ler a fonte (aqui, das <code>\_command\_names</code> função). se você quiser alguma documentação legível ... se você encontrar alguma, me avise!</p><p>¹ <sub>requer zsh≥4.3.3, obrigado <a href="https://unix.stackexchange.com/users/1107/chris-johnsen">chris johnsen</a> </sub></p> <p>redirectmatch de mod\_alias ​​não é tão poderoso quanto mod\_rewrite. se você tiver mod\_rewrite no seu host (pretty permalinks use-o, por exemplo), você poderá fazer o redirecionamento somente se o url não estiver no formato de link do arquivo.</p><p>para testar esse caso, há <a href="http://httpd.apache.org/docs/2.0/mod/mod\_rewrite.html#rewritecond"><code>rewritecond</code></a> e para fazer o comando de redirecionamento, existe o <a href="http://httpd.apache.org/docs/2.0/mod/mod\_rewrite.html#rewriterule"><code>rewriterule ... [r=301]</code></a> diretiva.</p><p>um exemplo baseado em seus dados:</p><pre><code>rewritecond %{request\_uri} !^/((20|19)[0-9]{2})/([0-9]{2})/[0-9]{2}$ [nc] rewriterule ^/([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*)$ http://&lt;domain&gt;/$4 [r=301,l] </code></pre><p>isso não foi testado, mas acho que deveria fazer o trabalho. eu usei o quantificador ({2}) para especificar melhor quantos números você espera. ao lado disso, no rewritecond eu criei um padrão que combina apenas com os 20 .. e 19 .. anos.</p><p>a primeira linha (a condição, <code>rewritecond</code>) verifica se não corresponde a uma url de arquivamento e, somente se não corresponder, a regra para fazer o redirecionamento será executada. o <code>rewriterule</code> basicamente faz o mesmo que a sua diretiva <code>redirectmatch</code>.</p> Altere o nome do arquivo sem alterar a extensão do mesmo (as 03 ou 04 últimas letras após o ".").
  

  
Exemplo: Se um arquivo chama-se "cidades.pdf", mantenha a extensão .pdf alterando somente o nome cidades.
  

  
A extensão é quem identifica o tipo do arquivo e qual programa deve abrí-lo, caso a mesma seja alterada realmente pode ser que o mesmo não se abra, mas nada que o inutilize, basta indicar qual programa que deve abrir o programa que mesmo sem a extensão ele funciona.
  

  
Caso não esteja visualizando a extensão do arquivo, pode renomeá-lo sem piedade pois esse aviso do windows é só por questão de segurança. blz…

vou colocar o passo a passo, com os arquivos a serem modificados para funcionar…

vc terá que editar o arquivo /etc/cups/cups-files.conf

uso o editor preferido, mas aqui vou colocar como exemplo o nano

sudo nano /etc/cups/cups-files.conf

procure por

# administrator user group, used to mat… <p>você pode configurá-las em opções do word, personalizar, atalhos de teclado.</p><p><strong>edit:</strong> na verdade, já é <kbd>ctrl</kbd> + <kbd>alt</kbd> + <kbd>h</kbd>.</p>