No seu exemplo, você não precisa usar xargsnada, pois findfará exatamente e com segurança o que deseja fazer.
Exatamente o que você deseja usar findé:
find -maxdepth 1 -name '*Cases*' -exec touch {} +
Neste exemplo, -maxdepth 1significa apenas pesquisar no diretório atual, não desça em nenhum subdiretório; por padrão, o find irá procurar em todos os subdiretórios (que geralmente é o que você deseja), a menos que você o restrinja com maxdepth. O {}é o nome do arquivo que será substituído em seu lugar e +é um dos dois marcadores de fim de comando, sendo o outro ;. A diferença entre eles é que isso ;significa executar o comando em cada arquivo, um de cada vez, enquanto que +executar o comando em todos os arquivos de uma só vez. Observe, no entanto, que seu shell provavelmente tentará se interpretar ;; portanto, você precisará escapar dele com um \;ou outro ';'. Sim, findtem uma série de pequenos aborrecimentos como esse, mas seu poder mais do que compensa isso.
Ambos finde xargssão difíceis de aprender em primeiro lugar. Para ajudá-lo a aprender, xargstente usar a opção -pou, --interactiveque mostra o comando que está prestes a executar e pergunta se você deseja executá-lo ou não.
Da mesma forma que findvocê pode usar -okno lugar de -execpara perguntar se você deseja ou não executar o comando.
Porém, há momentos em findque não é possível fazer tudo o que você deseja e é aí que xargsentra. O -execcomando aceita apenas uma instância de {}exibição; portanto, se você receber um erro, find -type f -exec cp {} {}.bak \;poderá fazê-lo da seguinte maneira :find -type f -print0 | xargs -0 -l1 -IX cp X X.bak
Você pode aprender mais sobre comandos de execução no manual do GNU Findutils .
Mencionei também que findo que você quer com segurança faz porque, ao lidar com arquivos, encontrará espaços e outros caracteres que causarão problemas, a xargsmenos que você use a opção -0ou --nulljunto com algo que gere itens de entrada finalizados por um caractere nulo. do espaço em branco.
xargse$(...)), xargs é muito mais seguro que a substituição de comando. E não me lembro de ter encontrado um nome de arquivo legítimo com uma nova linha. Os problemas de escape e expansão de palavras não são problemas com a substituição de comandos, e não xargs?