Eu tenho dois subdiretórios, s1
e s2
, e cada um tem arquivos nomeados file_1
e file_2
neles. Como altero os nomes desses arquivos para, digamos, s1_file1
, s1_file2
, e s2_file1
, s2_file2
, para que saibamos o que eles estão representando?
relate perguntas
-
Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?
-
Inicie/pare o serviço systemd usando o atalho de teclado [fechado]
-
Necessidade de algumas chamadas de sistema
-
astyle não altera a formatação do arquivo de origem
-
Passe o sistema de arquivos raiz por rótulo para o kernel do Linux
Sua pergunta omite detalhes que podem levar a uma resposta mais geral. Essa resposta pode não ser útil em geral, mas responde à sua pergunta conforme declarado .
Usar
mv
:Com
zsh
(e GNUmv
para sua-T
opção), renomeando os arquivos (não ocultos) que são encontrados com o mesmo nome (mesmot
ail) em mais de um subdiretório (não oculto) (deixando os únicos):(observe que não fazemos
files=(*/*(N))
para evitar considerar arquivos em links simbólicos para diretórios).Observe que depois de executar isso, você ainda pode acabar com arquivos com os mesmos nomes, como, por exemplo, se houvesse
s1/file
,s1/s2_file
es2/file
arquivos de antemão.Para obter um relatório de quais nomes de arquivos estão duplicados antes de fazer a renomeação, você pode executar (com a
extendedglob
opção habilitada):Que viu em
print
olumns ( cruzar) os olhos e alores do array associativo para o qual o valor não é ( ) (usando subscritos everse).r
2
C
a
k
v
count
A
^
1
R
Para considerar apenas arquivos regulares (com exclusão de qualquer outro tipo de arquivo, como fifos, diretórios, sockets, dispositivos...), adicione o
.
qualificador glob (files=($^subdirs/*(N.))
). Para considerar também arquivos ocultos ou arquivos em subdiretórios ocultos, você pode adicionar oD
qualificador glob, mas observe que, se você adicionar um prefixo que não comece com um ponto, o arquivo não ficará mais oculto.